{"items":[{"type":"link","label":"Business Management","link":"/en/b2b-v3/openapi","routeSlug":"/en/b2b-v3/openapi","content":{"contentType":"overview","meta":{"name":"Business Management"},"children":[{"nodeType":"container","panels":[{"title":"Download OpenAPI description","titleTranslationKey":"download.description.title","children":[{"kind":"download","label":"openapi.json","url":"/_bundle/en/b2b-v3/openapi.json?download"},{"kind":"download","label":"openapi.yaml","url":"/_bundle/en/b2b-v3/openapi.yaml?download"}]},{"title":"Overview","titleTranslationKey":"info.title","children":[{"kind":"externallink","title":"License","titleTranslationKey":"info.license","label":"Altegio API Agreement","url":"/en/api-license-agreement"},{"kind":"externallink","label":"Terms of Service","labelTranslationKey":"info.termsOfService","url":"https://alteg.io/en/info/terms/"}]},{"title":"Languages","titleTranslationKey":"languages.title","children":[{"kind":"languages","options":[{"key":"curl","title":"curl","lang":"curl"},{"key":"javascript","title":"JavaScript","lang":"JavaScript"},{"key":"node","title":"Node.js","lang":"Node.js"},{"key":"python","title":"Python","lang":"Python"},{"key":"java","title":"Java","lang":"Java"},{"key":"csharp","title":"C#","lang":"C#"},{"key":"php","title":"PHP","lang":"PHP"},{"key":"go","title":"Go","lang":"Go"},{"key":"ruby","title":"Ruby","lang":"Ruby"},{"key":"r","title":"R","lang":"R"},{"key":"payload","title":"Payload","lang":"Payload"}]}]},{"title":"Servers","titleTranslationKey":"servers.title","children":[{"kind":"servers","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"mode":"default"}]}],"children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"header","level":1,"label":"Business Management (3.0.0-preview)","showPageActions":true},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"blockquote","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"⚠️ "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Preview — this API is not live yet."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Planned release: "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"October 2026"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The endpoint surface is not deployed; paths and schemas may change before the contract freeze, and try-it and production calls are unavailable."},"children":[]}]}]}]}]}],"sectionId":"/en/b2b-v3/openapi"}],"sectionId":"/en/b2b-v3/openapi"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/overview"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Overview"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The Business Management API V3 is Altegio's next-generation public REST API."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This document is a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"preview of the V3 contract"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": it describes the target API surface so"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"partners and tooling can review it before the endpoints go live."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Preview status — please read first:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This is a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"contract preview, not a live production API"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The endpoint surface is not"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"deployed yet; try-it consoles and production calls are unavailable."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Paths, schemas, and field names "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"may change before the contract freeze"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" without"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"backward-compatibility guarantees."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every operation carries an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-altegio-status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Three values are defined:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"planned"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — designed, not scheduled for the first production release;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"preview"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — contract published for review, not deployed;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"available"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — live in production and covered by the October 2026 release promise."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Today every operation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"preview"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — none of them is deployed yet. The October"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"release covers only operations marked "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"available"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so publishing the full target"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"surface here is not a promise that all of it ships at once."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"available"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is enforced by CI in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"biz.erp"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"available"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" operation without a registered"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"route fails the OpenAPI conformance gate."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Where a design decision is still pending, the affected element also carries"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-altegio-assumption"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" describing the open question."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Base URL (resource API):"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"https://api.alteg.io/api/v3"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"All resources are under "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/api/v3"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and scoped to a Location:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/api/v3/locations/{location_id}/..."},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the path is verified against"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the credential used for the call — a Location the credential cannot access responds with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". OAuth and discovery endpoints live on the authorization host root"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"https://api.alteg.io"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/api/v3"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" prefix) — see the Authorization tag."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Canonical terms."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" V3 uses one public name per entity:"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Term"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Meaning"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A business location (branch)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_member"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A person on the Location's team who provides services."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"service"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A bookable service offered at a Location."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A person served by a Location — the person appointments are scheduled for."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A scheduled visit entry for one Team Member."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The billing unit that groups appointments and carries items and payments."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response format."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" V3 is flat resource REST. Single resources are plain"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"JSON objects with integer "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and a string "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" type marker. Lists use one predictable"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"envelope. V3 does "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" use JSON:API ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data.attributes"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") or wrapper envelopes such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{success,data,meta}"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"envelopes."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Object types."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Every resource declares its kind in the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field — the full"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"dictionary of this preview:"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"What it is"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A business location and its settings."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"service"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"service_category"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Catalog: a bookable service (simple or package) and its category."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_member"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A person on the team and the position dictionary."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A person served by a Location."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"availability_slot"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A bookable time slot (computed, read-only)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_instance"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bookable resources (rooms, equipment) and their instances."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A scheduled entry for one Team Member."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit_item"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The billing unit grouping appointments; its service/product lines."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A payment applied to a visit and its local reversal."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment_method"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"account"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Payment configuration dictionaries of the Location."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"product"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A sellable product from the Location catalog (minimal P0 read)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"accessible_resource"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A Location or chain grant visible on the current token."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_member_access"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"System-access status and role for a Team Member."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_create_result"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Package booking result with multiple appointments."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"list"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The list envelope wrapping any collection response."},"children":[]}]}]}]}]}]}]}],"sectionId":"/en/b2b-v3/openapi/section/overview"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/authorization"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authorization"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"V3 accepts exactly one credential shape on every call:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"Authorization: Bearer <token>\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Authorization: Bearer <token>\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Tokens are "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" strings — never parse or decode them. Access tokens are short-lived"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(about 15 minutes). There is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no public password grant"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": applications never collect"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Altegio passwords. Three ways to obtain a credential are supported."},"children":[]}]}]}]}],"sectionId":"/en/b2b-v3/openapi/section/authorization"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/authorization/client-credentials-+"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client Credentials + "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (marketplace, machine-to-machine)"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For marketplace applications acting autonomously (backends, background jobs, agents):"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A business installs your application in a Location and approves the scopes your"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"application requests."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Your backend calls "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /oauth/token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"grant_type=client_credentials"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", HTTP Basic"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"client authentication ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_secret"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), and the explicit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" you"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"want to act in. One token is bound to "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"one"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Location — an application installed in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"twenty Locations requests twenty tokens, and there is no account-wide token."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The server resolves your installation from the authenticated OAuth client plus that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Location, verifies the installation is active, and issues a short-lived opaque access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token. The token "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"acts on behalf of the installation"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — writes are allowed within"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the scopes the business granted at install time."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Call the API with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization: Bearer <access_token>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". This flow has "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no refresh"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — request a new access token when the current one expires."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Not every scope exists in every credential class."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"scopes"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" list published under"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"each OAuth flow is the set that flow can actually be granted — requesting anything outside"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"it fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Restricted keys use the same public catalog, except for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"credential-class exclusions called out here:"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Scope"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"First-iteration availability"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chain_*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (4 scopes)"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authorization Code and restricted keys may hold chain grants. A chain-wide marketplace installation is not part of the first iteration, so Client Credentials cannot receive them."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"locations:create"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authorization Code only. Creating a Location is account-level; Client Credentials always act inside one existing Location, and restricted keys cannot create new Locations."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authorization Code only in the first iteration. Client Credentials and restricted keys cannot grant, revoke, invite, or change ERP access."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Scopes are added to a flow or credential class, never removed: adding one later is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"backward-compatible, so the published lists start conservative."},"children":[]}]}]}]}],"sectionId":"/en/b2b-v3/openapi/section/authorization/client-credentials-+"}],"sectionId":"/en/b2b-v3/openapi/section/authorization/client-credentials-+"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/authorization/authorization-code-+-pkce-(user-delegated)"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authorization Code + PKCE (user-delegated)"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For applications and agent hosts acting on behalf of a specific Business User:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Redirect the user's browser to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /oauth/authorize"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redirect_uri"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"state"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and a PKCE "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"code_challenge"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (S256)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The user logs in with their Altegio account."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"consent screen"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" lists the requested scopes; the user grants or declines access."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The browser is redirected back to your "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redirect_uri"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with a short-lived, one-time"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"authorization "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (and your "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"state"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Exchange the code at "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /oauth/token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"grant_type=authorization_code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PKCE "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"code_verifier"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the response contains an access token and a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Refresh with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"grant_type=refresh_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Every use rotates the refresh token; replaying"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"an already-used refresh token revokes the whole token family."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /oauth/authorize"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"browser web flow"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (HTML login and consent pages), not a JSON"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"operation — it is therefore documented here in prose only. The delegated token acts with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the permissions of the user who granted it."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth client registration: official and known integrations are pre-registered as OAuth"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"clients. MCP hosts and other OAuth clients can self-onboard through Dynamic Client"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Registration ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /oauth/register"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" given as an HTTPS URL pointing to a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"client metadata document (CIMD) is also accepted. Registration creates an "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth client"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"identity only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — it does not create a marketplace application, an installation, a business"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"grant, or any access to data; those still come from an install or from user consent."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" means two different things depending on the surface"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the word "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"overloaded, so this contract keeps them apart:"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Surface"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Entity"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Resource API ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/clients"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the person the business serves"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/clients"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" resource"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/oauth/*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/.well-known/*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth client registration"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"altg_oauth_9c41"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or a CIMD URL"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Marketplace / Developer Portal"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the developer's application"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"application id — never sent on the wire in V3"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the standard field name from RFC 6749 and is not renamed; prose in the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"authorization sections always says "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth client"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when it means the protocol entity."},"children":[]}]}]}]}],"sectionId":"/en/b2b-v3/openapi/section/authorization/authorization-code-+-pkce-(user-delegated)"}],"sectionId":"/en/b2b-v3/openapi/section/authorization/authorization-code-+-pkce-(user-delegated)"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/authorization/restricted-key-(single-business-integrations)"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Restricted key (single-business integrations)"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For a business integrating its own scripts, services, or an owned MCP server:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A business administrator creates a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"restricted key"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the Altegio cabinet, choosing"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"its scopes and expiry. The key value is shown exactly once."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — there is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no token exchange"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":":"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization: Bearer <restricted_key>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Restricted keys use the same public scope catalog, minus credential-class exclusions"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the first iteration, and can be revoked in the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"cabinet at any time."},"children":[]}]}]}]}]}],"sectionId":"/en/b2b-v3/openapi/section/authorization/restricted-key-(single-business-integrations)"}],"sectionId":"/en/b2b-v3/openapi/section/authorization/restricted-key-(single-business-integrations)"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/access-model"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Access model"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every request is resolved through the same runtime formula:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"effective access = token scopes\n                 ∩ scopes granted to the installation / key\n                 ∩ business permissions of the token subject\n                 ∩ tenant (Location)\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"effective access = token scopes\n                 ∩ scopes granted to the installation / key\n                 ∩ business permissions of the token subject\n                 ∩ tenant (Location)\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scope opens an endpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; the subject's business permissions then decide which rows and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"fields are visible or writable. Having a scope does not bypass the permission system of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the business."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Location binding:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" resources live under "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/api/v3/locations/{location_id}/..."},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the route is checked against the credential. A foreign Location returns"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — existence is not leaked."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Scopes are credential-class bounded."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" A credential can use only scopes allowed for its"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"class. An installation (machine-to-machine) token acts with the permissions granted to the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"installation; a user-delegated token acts with the permissions of that specific Business"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"User; a restricted key acts with the scopes and resource grants set on the key."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"No step-up in this preview."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Dangerous operations in this preview are protected by"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"explicit scopes, the subject's business permissions, idempotency, audit, and rate limits."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A future human-confirmation flow will be added only with a complete challenge contract."},"children":[]}]}]}]}]}],"sectionId":"/en/b2b-v3/openapi/section/access-model"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/conventions"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Conventions"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Resource shape:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" a flat JSON object with integer "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", a string "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" type marker,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and domain fields. No envelopes, no prefixes on ids."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"List shape:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{\"object\": \"list\", \"data\": [...], \"has_more\": false, \"next_cursor\": null}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pagination is cursor-based: pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"limit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value from the previous"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"page as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors are opaque, expire, and only work for the credential and filter"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"set that produced them. Page/offset pagination does not exist in V3."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Field naming:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" all JSON fields, query parameters, and path segments are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"snake_case"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":";"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"operationId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" values are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"lowerCamelCase"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Dates and times:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" RFC 3339 everywhere."},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Audit instants ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"created_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cancelled_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are UTC: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"2026-07-14T09:20:31Z"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Appointment times ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"starts_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ends_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") carry the Location's local UTC offset:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"2026-07-09T11:30:00+01:00"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Date-only values are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"YYYY-MM-DD"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; wall-clock times (working hours, schedule slots)"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"HH:MM"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the Location's timezone."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Naive datetimes and Unix timestamps never appear."},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Money:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" integer "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"minor units"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of the Location currency ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"1250"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" = one thousand two hundred fifty minor units). The"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"currency"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (ISO 4217) is server-controlled, read-only, and repeated in money-carrying"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resources. Monetary field names use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"_minor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" suffix. Floating-point amounts are rejected."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partial updates:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" bodies are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/merge-patch+json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A missing field"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"means \"leave unchanged\"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears a nullable field; arrays are cleared with an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"explicit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", never "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Clearing a non-nullable field fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; writing a read-only field fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Unknown"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"request fields are rejected; unknown response fields must be ignored by clients."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expand[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":":"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" related objects are returned as ids by default. Documented relations can"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"be expanded one level deep with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expand[]=<relation>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (allowlist per endpoint, depth 1)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An unknown expand value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Expansion never bypasses field-level"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"permissions — see PII below."},"children":[]}]}]}]}]}],"sectionId":"/en/b2b-v3/openapi/section/conventions"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/errors"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Errors"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every error from a resource operation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/problem+json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (RFC 9457 hybrid):"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Field"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Meaning"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Stable URL identifying the problem type (links to documentation)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"title"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Human-readable summary of the problem type."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"HTTP status code."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"detail"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Human-readable explanation of this occurrence."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"code"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Stable machine-readable code"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — branch on this, never on text."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Field-level issues: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"source"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pointer"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pointer"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a JSON Pointer for body errors and a parameter name for query/path/header errors."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"instance"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request identifier for support and log correlation. Same value as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X-Request-Id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header of that response, so quoting either one is enough."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The OAuth protocol and discovery endpoints are the one exception: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /oauth/token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /oauth/revoke"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /oauth/register"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/.well-known/*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" return the standard OAuth 2.0"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"error object ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{\"error\": \"…\", \"error_description\": \"…\"}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") defined by RFC 6749, 7009 and 7591 —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/problem+json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /oauth/authorize"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" browser flow reports errors on its"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"own HTML page or as OAuth error parameters on the redirect, never as JSON. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /oauth/accessible-resources"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the opposite case: despite the path it is an ordinary"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer-authed read and uses "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/problem+json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" like the rest of the API."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Everything else in this section (stable codes, field-level "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", request correlation)"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"describes resource operations. Rate limiting is the one rule both surfaces share: every "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"carries "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Two conventions keep this table stable:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Promotion."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Only public machine-readable codes that clients are expected to branch on"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"enter this table. Adding a code means editing this table and registering it in the biz.erp"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"V3ProblemCatalog"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the same cycle — the CI conformance gate keeps both sides in sync."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Internal exceptions are never promoted implicitly: an unregistered code degrades to the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"generic status default and nothing internal leaks."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Naming."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" means the supplied value does not exist or fails validation"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_city"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_business_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unsupported_*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" means the value"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is valid but not supported by the product or policy ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unsupported_country"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unsupported_media_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unsupported_token_subject"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Stable codes used by this preview (branch on these; domain codes below are equally stable):"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Code"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"HTTP"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"400"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Generic client reject without a more specific registered code (status default for bare 400 and unknown 4xx). Does "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" mean broken JSON."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"400"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Protocol-only: broken JSON / unparseable body / wire-format syntax. Thrown explicitly — never the catch-all for every 400."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"401"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Missing, expired, or revoked token."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"403"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token does not carry the required scope."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"403"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Scope present, but the subject lacks the business permission."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"user_not_verified"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"403"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Location create blocked: the user account is not verified."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_creation_forbidden"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"403"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Location create is not allowed for this subject."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unsupported_token_subject"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"403"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This credential class cannot perform the operation (e.g. installation token on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"locations:create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"404"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Generic 404 fallback: unknown "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/api/v3/*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" path, gate/FF hide, or tenant policy without a safe resource-specific code."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{resource}_not_found"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"404"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Resource absent or hidden by tenant policy (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"method_not_allowed"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"405"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"HTTP method is not supported on an existing v3 route. Emitted by routing before any operation is selected, so it is deliberately not declared per operation; the body is the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Problem"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" shape as every other error. The response carries "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Allow"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the methods the route does accept, e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Allow: GET"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"406"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" cannot be satisfied."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"409"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Generic 409 fallback when the domain exception has no more specific registered code."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"409"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Appointment create lost the race for the requested time slot."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"409"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with a different request body."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_request_in_progress"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"409"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Same key while the first request is still running ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" included)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"409"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Location create conflicts with an existing Location."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"409"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cannot revoke the last owner of the Location."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invitation_already_pending"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"409"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A distinct pending invitation already exists."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"access_already_active"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"409"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Team Member already has active system access."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit_already_settled"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"409"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Visit is fully paid; adding a line would leave an unpaid remainder."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"412"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" did not match — the resource was changed by another writer."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unsupported_media_type"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"415"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Content-Type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is not supported."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation failed (details in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"phone_taken"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client phone already belongs to another client of the Location (under "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; audited and rate-limited)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exceeds_unpaid"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Payment amount exceeds the visit's unpaid remainder."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"immutable_after_finance"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Country/currency cannot change after financial data exists."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Merge-patch tried to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" a non-nullable field."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Merge-patch tried to change a read-only field."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"role_not_assignable"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested access role is not assignable in this Location."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invitation_contact_required"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Invitation delivery needs a contact and none is available."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_city"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"city_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is invalid for location create."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unsupported_country"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Country derived from city is not supported."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_business_type"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"business_type_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is invalid."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_quota_exceeded"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Account location quota exceeded."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"instrument_not_applicable"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Gift card / membership / loyalty instrument is not usable for this visit (unified; does not distinguish unknown vs wrong tenant)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"428"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"429"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit hit ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" included)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_creation_rate_limited"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"429"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Location create rate limit hit."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"500"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{"align":"right"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"503"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A required dependency is down; the write was not performed (fail closed)."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Field-level codes inside "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (not top-level "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") include "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and validation codes such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_datetime"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example — validation failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"):"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"type\": \"https://developer.alteg.io/problems/validation-error\",\n  \"title\": \"Request validation failed\",\n  \"status\": 422,\n  \"detail\": \"One or more fields are invalid.\",\n  \"instance\": \"urn:altegio:request:req_abc123\",\n  \"code\": \"validation_failed\",\n  \"errors\": [\n    {\n      \"code\": \"invalid_datetime\",\n      \"source\": \"body\",\n      \"pointer\": \"/starts_at\",\n      \"message\": \"starts_at must be a valid RFC 3339 datetime.\"\n    }\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"type\": \"https://developer.alteg.io/problems/validation-error\",\n  \"title\": \"Request validation failed\",\n  \"status\": 422,\n  \"detail\": \"One or more fields are invalid.\",\n  \"instance\": \"urn:altegio:request:req_abc123\",\n  \"code\": \"validation_failed\",\n  \"errors\": [\n    {\n      \"code\": \"invalid_datetime\",\n      \"source\": \"body\",\n      \"pointer\": \"/starts_at\",\n      \"message\": \"starts_at must be a valid RFC 3339 datetime.\"\n    }\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example — stale optimistic-concurrency version ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"):"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"type\": \"https://developer.alteg.io/problems/stale-version\",\n  \"title\": \"Resource version is stale\",\n  \"status\": 412,\n  \"detail\": \"The resource was modified after the version supplied in If-Match. Re-read it and retry.\",\n  \"instance\": \"urn:altegio:request:req_def456\",\n  \"code\": \"stale_version\"\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"type\": \"https://developer.alteg.io/problems/stale-version\",\n  \"title\": \"Resource version is stale\",\n  \"status\": 412,\n  \"detail\": \"The resource was modified after the version supplied in If-Match. Re-read it and retry.\",\n  \"instance\": \"urn:altegio:request:req_def456\",\n  \"code\": \"stale_version\"\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retry guidance depends on the code, not on a generic flag: fix the request on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":";"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"re-read the resource on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; retry the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; back off on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"/"},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"503"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; after a network timeout on"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a create or command, retry "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"only with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"sectionId":"/en/b2b-v3/openapi/section/errors"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/idempotency-and-concurrency"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotency & concurrency"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is required on every "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" create and command where a retry could"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"duplicate a side effect (creating appointments, clients, payments; cancel/status commands;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"refunds)."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Generate a unique key per logical request (UUID recommended)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A retry with the same key and the same body returns the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"original result"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — including"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the case where the first attempt committed but its response was lost."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A concurrent duplicate fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Keys are retained for "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"at least 24 hours"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", scoped to the credential, Location (when"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"present), and operation. After expiry the same key value may start a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"new"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" logical"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"request (it is not "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If the idempotency store is unavailable, the write is not performed: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"503 dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ETag / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" protects mutable resources from two writers silently overwriting each"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"other (for example, a human and an agent editing the same appointment):"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" a mutable resource — the response carries an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (creates and updates"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"return the fresh "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" too)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DELETE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match: <etag>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On success the response carries the new "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". If the resource changed in between, the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"call fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — re-read, reapply your change, retry. A missing"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" where it is required fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}]}],"sectionId":"/en/b2b-v3/openapi/section/idempotency-and-concurrency"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/pii-and-redaction"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PII & redaction"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client contact fields — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"phone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"additional_phone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — are sensitive:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reading them requires the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" scope "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the corresponding business"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"permission of the token subject."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When access is refused, a contact field is returned as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and its name is listed in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redacted_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of the same object. It is never replaced with a mask, a placeholder or an empty string, so an integration cannot write a redacted value back."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expand[]=client"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" follows the same rule: expanding a client on an appointment or visit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"without contact access returns the client with redacted contact fields. Expansion never"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"widens access."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 phone_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on create/update"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is part of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (no extra"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). It only signals that the phone is already owned by another"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"client of this Location — it does not return that client's identity or contact payload."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Phone-bearing writes are audited and share an anti-enumeration rate limit with exact"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"contact search so the existence signal cannot be bulk-probed."},"children":[]}]}]}]}]}],"sectionId":"/en/b2b-v3/openapi/section/pii-and-redaction"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/http-negotiation-and-caching"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"HTTP negotiation and caching"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Clients should send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept: application/json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for successful resource responses and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/problem+json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for errors; unsupported response media types fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"406 not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". JSON is UTF-8; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Content-Type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" may include "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"charset=utf-8"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Read operations may include "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Cache-Control"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" appropriate to the resource ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"no-store"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for PII-bearing reads, short "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"private"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"public"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" max-age for dictionaries and metadata). Mutable resource reads return strong ETags suitable for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; computed/list/read-model responses may use weak ETags only for cache validation and not for write preconditions. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match: *"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is not accepted on PATCH/DELETE in V3 preview; clients must re-read and send the concrete strong ETag."},"children":[]}]}]}]}],"sectionId":"/en/b2b-v3/openapi/section/http-negotiation-and-caching"}]}]}},{"type":"link","label":"Overview","link":"/en/b2b-v3/openapi/section/overview","routeSlug":"/en/b2b-v3/openapi/section/overview","content":null},{"type":"group","label":"Authorization","link":"/en/b2b-v3/openapi/section/authorization","routeSlug":"/en/b2b-v3/openapi/section/authorization","items":[{"type":"link","label":"Client Credentials + ","link":"/en/b2b-v3/openapi/section/authorization/client-credentials-+","routeSlug":"/en/b2b-v3/openapi/section/authorization/client-credentials-+","content":null},{"type":"link","label":"Authorization Code + PKCE (user-delegated)","link":"/en/b2b-v3/openapi/section/authorization/authorization-code-+-pkce-(user-delegated)","routeSlug":"/en/b2b-v3/openapi/section/authorization/authorization-code-+-pkce-(user-delegated)","content":null},{"type":"link","label":"Restricted key (single-business integrations)","link":"/en/b2b-v3/openapi/section/authorization/restricted-key-(single-business-integrations)","routeSlug":"/en/b2b-v3/openapi/section/authorization/restricted-key-(single-business-integrations)","content":null}],"content":null},{"type":"link","label":"Access model","link":"/en/b2b-v3/openapi/section/access-model","routeSlug":"/en/b2b-v3/openapi/section/access-model","content":null},{"type":"link","label":"Conventions","link":"/en/b2b-v3/openapi/section/conventions","routeSlug":"/en/b2b-v3/openapi/section/conventions","content":null},{"type":"link","label":"Errors","link":"/en/b2b-v3/openapi/section/errors","routeSlug":"/en/b2b-v3/openapi/section/errors","content":null},{"type":"link","label":"Idempotency & concurrency","link":"/en/b2b-v3/openapi/section/idempotency-and-concurrency","routeSlug":"/en/b2b-v3/openapi/section/idempotency-and-concurrency","content":null},{"type":"link","label":"PII & redaction","link":"/en/b2b-v3/openapi/section/pii-and-redaction","routeSlug":"/en/b2b-v3/openapi/section/pii-and-redaction","content":null},{"type":"link","label":"HTTP negotiation and caching","link":"/en/b2b-v3/openapi/section/http-negotiation-and-caching","routeSlug":"/en/b2b-v3/openapi/section/http-negotiation-and-caching","content":null},{"type":"separator","label":"Authorization","content":null},{"type":"group","label":"Authorization","link":"/en/b2b-v3/openapi/authorization","routeSlug":"/en/b2b-v3/openapi/authorization","items":[{"label":"Get authorization server metadata","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/authorization/getoauthauthorizationservermetadata","routeSlug":"/en/b2b-v3/openapi/authorization/getoauthauthorizationservermetadata","metadata":{"seo":{"title":"Get authorization server metadata","description":"Machine-readable OAuth 2.0 authorization server metadata (RFC 8414): endpoint URLs, supported grant types, PKCE methods, and scopes. Agents and MCP hosts use this document to discover the authorization and token endpoints automatically."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getOAuthAuthorizationServerMetadata","name":"Get authorization server metadata","isWebhook":false,"pointer":"/paths/~1.well-known~1oauth-authorization-server/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get authorization server metadata","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Machine-readable OAuth 2.0 authorization server metadata (RFC 8414): endpoint URLs,\nsupported grant types, PKCE methods, and scopes. Agents and MCP hosts use this\ndocument to discover the authorization and token endpoints automatically.\n"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/.well-known/oauth-authorization-server","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io","description":"Preview authorization server - endpoint surface is not live yet"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[],"responseCodes":["200","400","404","429","500","503"],"pointer":"/.well-known/oauth-authorization-server","href":"authorization/getoauthauthorizationservermetadata","openApiOperationId":"getOAuthAuthorizationServerMetadata","summary":"Get authorization server metadata"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io","description":"Preview authorization server - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Authorization server metadata.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthAuthorizationServerMetadata","exampleIds":["paths/~1.well-known~1oauth-authorization-server/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthAuthorizationServerMetadata","exampleIds":["paths/~1.well-known~1oauth-authorization-server/get/responses/200/content/application~1json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Cache-Control":{"description":"Public metadata may be cached briefly; clients should revalidate before long-lived use.","schema":{"type":"string"},"example":"public, max-age=3600"}},"headerSchemaId":"schema_485"},{"code":"400","description":"Invalid metadata request (OAuth error object).","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError"}},"schemaId":"components/schemas/OAuthError"},{"code":"404","description":"Metadata document is not available."},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Too many metadata requests from this address. Discovery is cacheable — honour"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Cache-Control"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" instead of polling. Retry after the interval in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1.well-known~1oauth-authorization-server/get/responses/429/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1.well-known~1oauth-authorization-server/get/responses/429/content/application~1json/example"],"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60}},"headerSchemaId":"schema_486"},{"code":"500","description":"Metadata document cannot be generated (OAuth error object).","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError"}},"schemaId":"components/schemas/OAuthError"},{"code":"503","description":"Authorization metadata dependency is unavailable (OAuth error object).","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError"}},"schemaId":"components/schemas/OAuthError"}],"pointer":"/paths/~1.well-known~1oauth-authorization-server/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/OAuthAuthorizationServerMetadata","exampleIds":["paths/~1.well-known~1oauth-authorization-server/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthAuthorizationServerMetadata","exampleIds":["paths/~1.well-known~1oauth-authorization-server/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/OAuthError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError"}}},{"code":"404"},{"code":"429","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1.well-known~1oauth-authorization-server/get/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1.well-known~1oauth-authorization-server/get/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"components/schemas/OAuthError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError"}}},{"code":"503","schemaId":"components/schemas/OAuthError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/authorization/getoauthauthorizationservermetadata"}],"panels":[]}]},"httpPath":"/.well-known/oauth-authorization-server"},{"label":"Issue an access token","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/authorization/createoauthtoken","routeSlug":"/en/b2b-v3/openapi/authorization/createoauthtoken","metadata":{"seo":{"title":"Issue an access token","description":"OAuth 2.0 token endpoint (RFC 6749). Supports three grants:"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createOAuthToken","name":"Issue an access token","isWebhook":false,"pointer":"/paths/~1oauth~1token/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Issue an access token","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 token endpoint (RFC 6749). Supports three grants:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"authorization_code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — exchange a code obtained from the browser"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /oauth/authorize"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" flow (PKCE "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"code_verifier"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" required). Returns an access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token and a rotating refresh token."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_credentials"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — machine-to-machine token for a marketplace installation."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Always requires the explicit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; the installation is resolved from the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"authenticated OAuth client plus that Location. No refresh token is returned."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refresh_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — rotate a refresh token from the Authorization Code flow."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The previous refresh token is invalidated; replaying it revokes the token family."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Confidential clients authenticate with HTTP Basic ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_secret_basic"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); public"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"clients (PKCE-only) send their "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the form body. There is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no password"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"grant"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Errors from this endpoint use the standard OAuth 2.0 error object"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{\"error\": \"...\", \"error_description\": \"...\"}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), not "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/problem+json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/x-www-form-urlencoded"],"mediaTypeSchemas":{"application/x-www-form-urlencoded":{"schemaId":"components/schemas/OAuthTokenRequest","exampleIds":["paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/clientCredentials","paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/authorizationCode"]}},"schemaId":"components/schemas/OAuthTokenRequest","exampleIds":["paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/clientCredentials","paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/authorizationCode"],"pointer":"/paths/~1oauth~1token/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/oauth/token","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io","description":"Preview authorization server - endpoint surface is not live yet"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[],"requestBody":{"application/x-www-form-urlencoded":{"schemaId":"components/schemas/OAuthTokenRequest","exampleIds":["paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/clientCredentials","paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/authorizationCode"]}},"responseCodes":["200","400","401","429","500","503"],"pointer":"/oauth/token","href":"authorization/createoauthtoken","openApiOperationId":"createOAuthToken","summary":"Issue an access token"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io","description":"Preview authorization server - endpoint surface is not live yet"}],"schemaId":"components/schemas/OAuthTokenRequest","exampleIds":["paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/clientCredentials","paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/authorizationCode"],"mediaTypes":["application/x-www-form-urlencoded"],"mediaTypeSchemas":{"application/x-www-form-urlencoded":{"schemaId":"components/schemas/OAuthTokenRequest","exampleIds":["paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/clientCredentials","paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/authorizationCode"]}},"examples":[{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Token issued.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthTokenResponse","exampleIds":["paths/~1oauth~1token/post/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthTokenResponse","exampleIds":["paths/~1oauth~1token/post/responses/200/content/application~1json/example"]},{"code":"400","description":"Invalid request or grant (RFC 6749 error object).","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/400/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/400/content/application~1json/example"]},{"code":"401","description":"Client authentication failed (RFC 6749 error object).","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/401/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/401/content/application~1json/example"]},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Too many token requests for this client, subject or address. Failed grant attempts"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"count against the same budget. Retry after the interval in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; do not"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"retry a rejected "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"authorization_code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — start a new authorization."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/429/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/429/content/application~1json/example"],"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60}},"headerSchemaId":"schema_486"},{"code":"500","description":"Token could not be issued because of an unexpected server error (OAuth error object).","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/500/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/500/content/application~1json/example"]},{"code":"503","description":"An authorization dependency is unavailable (OAuth error object). Back off and retry;\nalready-issued access tokens keep working until they expire.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/503/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/503/content/application~1json/example"]}],"pointer":"/paths/~1oauth~1token/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/OAuthTokenResponse","exampleIds":["paths/~1oauth~1token/post/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthTokenResponse","exampleIds":["paths/~1oauth~1token/post/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/401/content/application~1json/example"]}}},{"code":"429","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/500/content/application~1json/example"]}}},{"code":"503","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/503/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1token/post/responses/503/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/authorization/createoauthtoken"}],"panels":[]}]},"httpPath":"/oauth/token"},{"label":"Revoke a token","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/authorization/revokeoauthtoken","routeSlug":"/en/b2b-v3/openapi/authorization/revokeoauthtoken","metadata":{"seo":{"title":"Revoke a token","description":"OAuth 2.0 token revocation (RFC 7009). Revokes an access token or a refresh token;revoking a refresh token revokes its whole token family. The endpoint returns 200even when the token is already invalid, as required by the RFC."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"revokeOAuthToken","name":"Revoke a token","isWebhook":false,"pointer":"/paths/~1oauth~1revoke/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Revoke a token","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 token revocation (RFC 7009). Revokes an access token or a refresh token;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"revoking a refresh token revokes its whole token family. The endpoint returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"even when the token is already invalid, as required by the RFC."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/x-www-form-urlencoded"],"mediaTypeSchemas":{"application/x-www-form-urlencoded":{"schemaId":"components/schemas/OAuthRevokeRequest","exampleIds":["paths/~1oauth~1revoke/post/requestBody/content/application~1x-www-form-urlencoded/example"]}},"schemaId":"components/schemas/OAuthRevokeRequest","exampleIds":["paths/~1oauth~1revoke/post/requestBody/content/application~1x-www-form-urlencoded/example"],"pointer":"/paths/~1oauth~1revoke/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/oauth/revoke","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io","description":"Preview authorization server - endpoint surface is not live yet"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[],"requestBody":{"application/x-www-form-urlencoded":{"schemaId":"components/schemas/OAuthRevokeRequest","exampleIds":["paths/~1oauth~1revoke/post/requestBody/content/application~1x-www-form-urlencoded/example"]}},"responseCodes":["200","401","429","500","503"],"pointer":"/oauth/revoke","href":"authorization/revokeoauthtoken","openApiOperationId":"revokeOAuthToken","summary":"Revoke a token"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io","description":"Preview authorization server - endpoint surface is not live yet"}],"schemaId":"components/schemas/OAuthRevokeRequest","exampleIds":["paths/~1oauth~1revoke/post/requestBody/content/application~1x-www-form-urlencoded/example"],"mediaTypes":["application/x-www-form-urlencoded"],"mediaTypeSchemas":{"application/x-www-form-urlencoded":{"schemaId":"components/schemas/OAuthRevokeRequest","exampleIds":["paths/~1oauth~1revoke/post/requestBody/content/application~1x-www-form-urlencoded/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The token has been revoked (or was already invalid)."},{"code":"401","description":"Client authentication failed (RFC 6749 error object).","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/401/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/401/content/application~1json/example"]},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Too many revocation requests for this client or address. Retry after the interval in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" does not mean the token survived — re-send the same request."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/429/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/429/content/application~1json/example"],"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60}},"headerSchemaId":"schema_486"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Revocation could not be completed because of an unexpected server error (OAuth error"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"object). The token may still be valid — retry until the endpoint returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/500/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/500/content/application~1json/example"]},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A revocation dependency is unavailable (OAuth error object). The token may still be"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"valid — back off and retry until the endpoint returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/503/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/503/content/application~1json/example"]}],"pointer":"/paths/~1oauth~1revoke/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200"},{"code":"401","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/401/content/application~1json/example"]}}},{"code":"429","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/500/content/application~1json/example"]}}},{"code":"503","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/503/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1revoke/post/responses/503/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/authorization/revokeoauthtoken"}],"panels":[]}]},"httpPath":"/oauth/revoke"},{"label":"Register an OAuth client (DCR)","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/authorization/registeroauthclient","routeSlug":"/en/b2b-v3/openapi/authorization/registeroauthclient","metadata":{"seo":{"title":"Register an OAuth client (DCR)","description":"Minimal Dynamic Client Registration (RFC 7591) for MCP hosts and other clients thatare not pre-registered. Registration only issues a client_id — access to any datastill requires the user login/consent flow and granted scopes."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"registerOAuthClient","name":"Register an OAuth client (DCR)","isWebhook":false,"pointer":"/paths/~1oauth~1register/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Register an OAuth client (DCR)","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Minimal Dynamic Client Registration (RFC 7591) for MCP hosts and other clients that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"are not pre-registered. Registration only issues a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — access to any data"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"still requires the user login/consent flow and granted scopes."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Public clients (native apps, local MCP packages, agent hosts without a secure"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"backend) receive "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_secret"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and must use Authorization Code + PKCE."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" supplied as an HTTPS URL pointing to a Client ID Metadata Document"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(CIMD) is also accepted at the authorization endpoint without prior registration."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Registration is rate-limited and monitored for abuse; redirect URIs are validated."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/OAuthClientRegistrationRequest","exampleIds":["paths/~1oauth~1register/post/requestBody/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthClientRegistrationRequest","exampleIds":["paths/~1oauth~1register/post/requestBody/content/application~1json/example"],"pointer":"/paths/~1oauth~1register/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/oauth/register","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io","description":"Preview authorization server - endpoint surface is not live yet"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/OAuthClientRegistrationRequest","exampleIds":["paths/~1oauth~1register/post/requestBody/content/application~1json/example"]}},"responseCodes":["201","400","429","503"],"pointer":"/oauth/register","href":"authorization/registeroauthclient","openApiOperationId":"registerOAuthClient","summary":"Register an OAuth client (DCR)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io","description":"Preview authorization server - endpoint surface is not live yet"}],"schemaId":"components/schemas/OAuthClientRegistrationRequest","exampleIds":["paths/~1oauth~1register/post/requestBody/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/OAuthClientRegistrationRequest","exampleIds":["paths/~1oauth~1register/post/requestBody/content/application~1json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Client registered.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthClientRegistrationResponse","exampleIds":["paths/~1oauth~1register/post/responses/201/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthClientRegistrationResponse","exampleIds":["paths/~1oauth~1register/post/responses/201/content/application~1json/example"]},{"code":"400","description":"Invalid client metadata (RFC 7591 error object).","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1register/post/responses/400/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1register/post/responses/400/content/application~1json/example"]},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Too many registration attempts from this client or address. Anonymous registration is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rate-limited per address and per registered client, and repeated invalid metadata counts"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"against the same budget. Retry after the interval in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1register/post/responses/429/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1register/post/responses/429/content/application~1json/example"],"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60}},"headerSchemaId":"schema_486"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Dynamic registration is not available. Returned when anonymous registration is switched"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"off for the environment; pre-registered clients and the CIMD "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" URL form keep"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"working."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1register/post/responses/503/content/application~1json/example"]}},"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1register/post/responses/503/content/application~1json/example"]}],"pointer":"/paths/~1oauth~1register/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/OAuthClientRegistrationResponse","exampleIds":["paths/~1oauth~1register/post/responses/201/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthClientRegistrationResponse","exampleIds":["paths/~1oauth~1register/post/responses/201/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1register/post/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1register/post/responses/400/content/application~1json/example"]}}},{"code":"429","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1register/post/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1register/post/responses/429/content/application~1json/example"]}}},{"code":"503","schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1register/post/responses/503/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OAuthError","exampleIds":["paths/~1oauth~1register/post/responses/503/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/authorization/registeroauthclient"}],"panels":[]}]},"httpPath":"/oauth/register"},{"label":"List the resources the current token can access","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/authorization/listaccessibleresources","routeSlug":"/en/b2b-v3/openapi/authorization/listaccessibleresources","metadata":{"seo":{"title":"List the resources the current token can access","description":"Returns the resources this token is actually granted — not everything the user orapplication could reach. Each entry carries the scopes granted on that resource, so aclient knows which location_id to use in a path and which chain-level calls it may make."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listAccessibleResources","name":"List the resources the current token can access","isWebhook":false,"pointer":"/paths/~1oauth~1accessible-resources/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List the resources the current token can access","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the resources "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"this token"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is actually granted — not everything the user or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"application could reach. Each entry carries the scopes granted on that resource, so a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"client knows which "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to use in a path and which chain-level calls it may make."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A consent may grant several resources at once; each becomes an independent entry that can be"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"revoked on its own. A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chain"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" entry does not imply its locations: chain grants and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"location grants are separate, and a new location added to a chain later is not covered"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"automatically."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":[],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/oauth/accessible-resources","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io","description":"Preview authorization server - endpoint surface is not live yet"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":[]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","406","429","500","503"],"pointer":"/oauth/accessible-resources","href":"authorization/listaccessibleresources","openApiOperationId":"listAccessibleResources","summary":"List the resources the current token can access","securityGroups":[{"OAuth2":[]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io","description":"Preview authorization server - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Resources accessible with the current token.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AccessibleResourceList","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/200/content/application~1json/examples/oneChainTwoLocations"]}},"schemaId":"components/schemas/AccessibleResourceList","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/200/content/application~1json/examples/oneChainTwoLocations"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Cache-Control":{"description":"Grants change independently of the token; do not cache beyond the token lifetime.","schema":{"type":"string"},"example":"no-store"}},"headerSchemaId":"schema_487"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1oauth~1accessible-resources/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1oauth~1accessible-resources/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1oauth~1accessible-resources/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AccessibleResourceList","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/200/content/application~1json/examples/oneChainTwoLocations"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AccessibleResourceList","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/200/content/application~1json/examples/oneChainTwoLocations"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1oauth~1accessible-resources/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1oauth~1accessible-resources/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/401/content/application~1problem+json/example"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/406/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1oauth~1accessible-resources/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/authorization/listaccessibleresources"}],"panels":[]}]},"httpPath":"/oauth/accessible-resources"}],"content":{"contentType":"group","meta":{"name":"Authorization"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Authorization","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Step 0 of every integration: obtain a Bearer credential. Machine-to-machine"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"integrations exchange client credentials for an installation token, user-facing"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"applications walk the Authorization Code + PKCE browser flow, and single-business"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scripts use a restricted key created in the cabinet. These endpoints live outside"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/api/v3"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the authorization server host."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/.well-known/oauth-authorization-server","summary":"Get authorization server metadata","prefix":{"name":"get","color":"get"},"badges":[],"link":"/authorization/getoauthauthorizationservermetadata","deprecated":false},{"title":"/oauth/token","summary":"Issue an access token","prefix":{"name":"post","color":"post"},"badges":[],"link":"/authorization/createoauthtoken","deprecated":false},{"title":"/oauth/revoke","summary":"Revoke a token","prefix":{"name":"post","color":"post"},"badges":[],"link":"/authorization/revokeoauthtoken","deprecated":false},{"title":"/oauth/register","summary":"Register an OAuth client (DCR)","prefix":{"name":"post","color":"post"},"badges":[],"link":"/authorization/registeroauthclient","deprecated":false},{"title":"/oauth/accessible-resources","summary":"List the resources the current token can access","prefix":{"name":"get","color":"get"},"badges":[],"link":"/authorization/listaccessibleresources","deprecated":false}]}]}]}]}},{"type":"separator","label":"Location Setup","content":null},{"type":"group","label":"Locations","link":"/en/b2b-v3/openapi/locations","routeSlug":"/en/b2b-v3/openapi/locations","items":[{"label":"List cities","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/locations/listcities","routeSlug":"/en/b2b-v3/openapi/locations/listcities","metadata":{"seo":{"title":"List cities","description":"Cursor-paginated list. Default ordering: country_id, name, id tie-breaker. Cursors use the cursor query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with 422 validation_failed using field codes expired_cursor, invalid_cursor, or foreign_cursor."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listCities","name":"List cities","isWebhook":false,"pointer":"/paths/~1reference~1cities/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List cities","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cursor-paginated list. Default ordering: country_id, name, id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":[],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"country_id","in":"query","schemaId":"schema_491","description":"Country dictionary identifier used to filter cities."},{"name":"query","in":"query","schemaId":"schema_492","description":"Search query."},{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1reference~1cities/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/reference/cities","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[],"query":[{"name":"country_id","in":"query","required":false,"schemaId":"schema_491"},{"name":"query","in":"query","required":false,"schemaId":"schema_492"},{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":[]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/reference/cities","href":"locations/listcities","openApiOperationId":"listCities","summary":"List cities","securityGroups":[{"OAuth2":[]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"OK","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CityList"}},"schemaId":"components/schemas/CityList","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1reference~1cities/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1reference~1cities/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1reference~1cities/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1reference~1cities/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1reference~1cities/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1reference~1cities/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1reference~1cities/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CityList","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CityList"}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1reference~1cities/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1reference~1cities/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1reference~1cities/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1reference~1cities/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1reference~1cities/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1reference~1cities/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1cities/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/locations/listcities"}],"panels":[]}]},"httpPath":"/reference/cities"},{"label":"List business types","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/locations/listbusinesstypes","routeSlug":"/en/b2b-v3/openapi/locations/listbusinesstypes","metadata":{"seo":{"title":"List business types","description":"Cursor-paginated list. Default ordering: title, id tie-breaker. Cursors use the cursor query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with 422 validation_failed using field codes expired_cursor, invalid_cursor, or foreign_cursor."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listBusinessTypes","name":"List business types","isWebhook":false,"pointer":"/paths/~1reference~1business_types/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List business types","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cursor-paginated list. Default ordering: title, id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":[],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1reference~1business_types/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/reference/business_types","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[],"query":[{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":[]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/reference/business_types","href":"locations/listbusinesstypes","openApiOperationId":"listBusinessTypes","summary":"List business types","securityGroups":[{"OAuth2":[]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"OK","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessTypeList"}},"schemaId":"components/schemas/BusinessTypeList","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1reference~1business_types/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1reference~1business_types/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1reference~1business_types/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1reference~1business_types/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1reference~1business_types/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1reference~1business_types/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1reference~1business_types/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BusinessTypeList","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BusinessTypeList"}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1reference~1business_types/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1reference~1business_types/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1reference~1business_types/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1reference~1business_types/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1reference~1business_types/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1reference~1business_types/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1reference~1business_types/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/locations/listbusinesstypes"}],"panels":[]}]},"httpPath":"/reference/business_types"},{"label":"Create a location","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/locations/createlocation","routeSlug":"/en/b2b-v3/openapi/locations/createlocation","metadata":{"seo":{"title":"Create a location","description":"Creates a standalone Location for the current authenticated user."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createLocation","name":"Create a location","isWebhook":false,"pointer":"/paths/~1locations/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a location","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Creates a standalone Location for the current authenticated user."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authorization is user-delegated only (Authorization Code + PKCE); installation"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(client credentials) tokens and restricted keys are rejected. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"country_code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"timezone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"currency"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are derived from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"city_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and are not writable."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"201"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response carries "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"provisioning_status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ready"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" means base accounts and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"payment methods already exist, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pending"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" means defaults are still being provisioned."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Errors: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"403 user_not_verified"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_creation_forbidden"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unsupported_token_subject"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 invalid_city"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unsupported_country"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_business_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_quota_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":";"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429 location_creation_rate_limited"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["locations:create"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]}]},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/LocationCreate","exampleIds":["paths/~1locations/post/requestBody/content/application~1json/example"]}},"schemaId":"components/schemas/LocationCreate","exampleIds":["paths/~1locations/post/requestBody/content/application~1json/example"],"pointer":"/paths/~1locations/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["locations:create"]}],"requestBody":{"application/json":{"schemaId":"components/schemas/LocationCreate","exampleIds":["paths/~1locations/post/requestBody/content/application~1json/example"]}},"responseCodes":["201","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations","href":"locations/createlocation","openApiOperationId":"createLocation","summary":"Create a location"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/LocationCreate","exampleIds":["paths/~1locations/post/requestBody/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/LocationCreate","exampleIds":["paths/~1locations/post/requestBody/content/application~1json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/LocationCreated"}},"schemaId":"components/schemas/LocationCreated","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Location":{"$ref":"#/components/headers/Location"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_497"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/LocationCreated","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/LocationCreated"}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/locations/createlocation"}],"panels":[]}]},"httpPath":"/locations"},{"label":"Get a location","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/locations/getlocation","routeSlug":"/en/b2b-v3/openapi/locations/getlocation","metadata":{"seo":{"title":"Get a location","description":"Returns the Location resource: name, address, contacts, timezone, andcurrency. The response carries an ETag header for a subsequent PATCH."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getLocation","name":"Get a location","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get a location","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the Location resource: name, address, contacts, timezone, and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"currency. The response carries an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header for a subsequent "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["locations:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["locations:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}","href":"locations/getlocation","openApiOperationId":"getLocation","summary":"Get a location","securityGroups":[{"OAuth2":["locations:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The Location.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Location","exampleIds":["paths/~1locations~1{location_id}/get/responses/200/content/application~1json/examples/location"]}},"schemaId":"components/schemas/Location","exampleIds":["paths/~1locations~1{location_id}/get/responses/200/content/application~1json/examples/location"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Location","exampleIds":["paths/~1locations~1{location_id}/get/responses/200/content/application~1json/examples/location"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Location","exampleIds":["paths/~1locations~1{location_id}/get/responses/200/content/application~1json/examples/location"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/locations/getlocation"}],"panels":[]}]},"httpPath":"/locations/{location_id}"},{"label":"Update a location","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/locations/updatelocation","routeSlug":"/en/b2b-v3/openapi/locations/updatelocation","metadata":{"seo":{"title":"Update a location","description":"Partially updates partner-relevant Location settings with a merge-patch body.Requires If-Match with the ETag from a previous read."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateLocation","name":"Update a location","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update a location","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partially updates partner-relevant Location settings with a merge-patch body."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from a previous read."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"timezone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"country"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"currency"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are read-only and intentionally absent from the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"update schema — they follow "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"city_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Changing "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"city_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to a city that would alter the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"country or currency is rejected with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 immutable_after_finance"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" once financial data"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exists for the Location; before that the move is allowed and the derived values follow."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["locations:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}/patch/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/LocationUpdate","exampleIds":["paths/~1locations~1{location_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"schemaId":"components/schemas/LocationUpdate","exampleIds":["paths/~1locations~1{location_id}/patch/requestBody/content/application~1merge-patch+json/example"],"pointer":"/paths/~1locations~1{location_id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/locations/{location_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["locations:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/merge-patch+json":{"schemaId":"components/schemas/LocationUpdate","exampleIds":["paths/~1locations~1{location_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}","href":"locations/updatelocation","openApiOperationId":"updateLocation","summary":"Update a location","securityGroups":[{"OAuth2":["locations:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/LocationUpdate","exampleIds":["paths/~1locations~1{location_id}/patch/requestBody/content/application~1merge-patch+json/example"],"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/LocationUpdate","exampleIds":["paths/~1locations~1{location_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The updated Location.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Location","exampleIds":["paths/~1locations~1{location_id}/patch/responses/200/content/application~1json/examples/location"]}},"schemaId":"components/schemas/Location","exampleIds":["paths/~1locations~1{location_id}/patch/responses/200/content/application~1json/examples/location"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Location","exampleIds":["paths/~1locations~1{location_id}/patch/responses/200/content/application~1json/examples/location"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Location","exampleIds":["paths/~1locations~1{location_id}/patch/responses/200/content/application~1json/examples/location"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}/patch/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/locations/updatelocation"}],"panels":[]}]},"httpPath":"/locations/{location_id}"}],"content":{"contentType":"group","meta":{"name":"Locations"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Locations","showPageActions":true},{"nodeType":"markdoc","content":"The Location is the root of the V3 resource tree. Read it to learn derived timezone, country, currency, locale, and business settings; update only the partner-relevant allowlist."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/reference/cities","summary":"List cities","prefix":{"name":"get","color":"get"},"badges":[],"link":"/locations/listcities","deprecated":false},{"title":"/reference/business_types","summary":"List business types","prefix":{"name":"get","color":"get"},"badges":[],"link":"/locations/listbusinesstypes","deprecated":false},{"title":"/locations","summary":"Create a location","prefix":{"name":"post","color":"post"},"badges":[],"link":"/locations/createlocation","deprecated":false},{"title":"/locations/{location_id}","summary":"Get a location","prefix":{"name":"get","color":"get"},"badges":[],"link":"/locations/getlocation","deprecated":false},{"title":"/locations/{location_id}","summary":"Update a location","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/locations/updatelocation","deprecated":false}]}]}]}]}},{"type":"group","label":"Services","link":"/en/b2b-v3/openapi/services","routeSlug":"/en/b2b-v3/openapi/services","items":[{"label":"List services","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/services/listservices","routeSlug":"/en/b2b-v3/openapi/services/listservices","metadata":{"seo":{"title":"List services","description":"Returns the services of the Location as a cursor-paginated list. Prices are integerminor units; duration_seconds is the default duration, and team_members[] carriesper-member price/duration overrides."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listServices","name":"List services","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1services/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List services","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the services of the Location as a cursor-paginated list. Prices are integer"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"minor units; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duration_seconds"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the default duration, and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" carries"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"per-member price/duration overrides."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cursor-paginated list. Default ordering: category_id, name, id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["services:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1services/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1services/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/services","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["services:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/services","href":"services/listservices","openApiOperationId":"listServices","summary":"List services","securityGroups":[{"OAuth2":["services:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"A page of services.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ServiceList","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/ServiceList","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1services/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ServiceList","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ServiceList","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/services/listservices"}],"panels":[]}]},"httpPath":"/locations/{location_id}/services"},{"label":"Create a service","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/services/createservice","routeSlug":"/en/b2b-v3/openapi/services/createservice","metadata":{"seo":{"title":"Create a service","description":"Creates a service in the Location catalog. Link Team Members inline throughteam_members[] — a service without at least one bookable Team Member link does notappear in availability search. Requires Idempotency-Key."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createService","name":"Create a service","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1services/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a service","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Creates a service in the Location catalog. Link Team Members inline through"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — a service without at least one bookable Team Member link does not"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"appear in availability search. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Service packages (complex services made of multiple simple services) are created"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"through this same operation: send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type: package"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"package"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" block listing the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"components."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["services:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1services/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1services/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ServiceCreate","exampleIds":["paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/simple","paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/package"]}},"schemaId":"components/schemas/ServiceCreate","exampleIds":["paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/simple","paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/package"],"pointer":"/paths/~1locations~1{location_id}~1services/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations/{location_id}/services","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["services:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/ServiceCreate","exampleIds":["paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/simple","paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/package"]}},"responseCodes":["201","400","401","403","404","406","409","415","422","429","500","503"],"pointer":"/locations/{location_id}/services","href":"services/createservice","openApiOperationId":"createService","summary":"Create a service","securityGroups":[{"OAuth2":["services:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/ServiceCreate","exampleIds":["paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/simple","paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/package"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ServiceCreate","exampleIds":["paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/simple","paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/package"]}},"examples":[{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"The created service.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Service","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/201/content/application~1json/examples/service","paths/~1locations~1{location_id}~1services/post/responses/201/content/application~1json/examples/package"]}},"schemaId":"components/schemas/Service","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/201/content/application~1json/examples/service","paths/~1locations~1{location_id}~1services/post/responses/201/content/application~1json/examples/package"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Location":{"$ref":"#/components/headers/Location"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_499"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was already used with a different body ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the first request with this key is still running ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1services/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1services/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_495"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1services/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/Service","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/201/content/application~1json/examples/service","paths/~1locations~1{location_id}~1services/post/responses/201/content/application~1json/examples/package"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Service","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/201/content/application~1json/examples/service","paths/~1locations~1{location_id}~1services/post/responses/201/content/application~1json/examples/package"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1services/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1services/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/services/createservice"}],"panels":[]}]},"httpPath":"/locations/{location_id}/services"},{"label":"Get a service","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/services/getservice","routeSlug":"/en/b2b-v3/openapi/services/getservice","metadata":{"seo":{"title":"Get a service","description":"Returns a single service with its category, pricing, duration, Team Member links, andpackage components when type is package.The response carries an ETag header for a subsequent PATCH or DELETE."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getService","name":"Get a service","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1services~1{service_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get a service","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns a single service with its category, pricing, duration, Team Member links, and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"package components when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"package"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The response carries an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header for a subsequent "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DELETE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["services:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"service_id","in":"path","schemaId":"schema_491","description":"Identifier of the service.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1services~1{service_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/services/{service_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"service_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["services:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/services/{service_id}","href":"services/getservice","openApiOperationId":"getService","summary":"Get a service","securityGroups":[{"OAuth2":["services:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The service.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Service","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/200/content/application~1json/examples/service","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/200/content/application~1json/examples/package"]}},"schemaId":"components/schemas/Service","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/200/content/application~1json/examples/service","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/200/content/application~1json/examples/package"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1services~1{service_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Service","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/200/content/application~1json/examples/service","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/200/content/application~1json/examples/package"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Service","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/200/content/application~1json/examples/service","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/200/content/application~1json/examples/package"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/services/getservice"}],"panels":[]}]},"httpPath":"/locations/{location_id}/services/{service_id}"},{"label":"Update a service","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/services/updateservice","routeSlug":"/en/b2b-v3/openapi/services/updateservice","metadata":{"seo":{"title":"Update a service","description":"Partially updates a service with a merge-patch body. team_members[], when present,replaces the full set of Team Member links (use [] to unlink everyone). type isimmutable; for package services, package.components replaces the full componentlist when present. Requires If-Match."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateService","name":"Update a service","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1services~1{service_id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update a service","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partially updates a service with a merge-patch body. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", when present,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"replaces the full set of Team Member links (use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to unlink everyone). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"immutable; for package services, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"package.components"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" replaces the full component"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"list when present. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["services:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"service_id","in":"path","schemaId":"schema_491","description":"Identifier of the service.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1services~1{service_id}/patch/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1services~1{service_id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/ServiceUpdate","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"schemaId":"components/schemas/ServiceUpdate","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/requestBody/content/application~1merge-patch+json/example"],"pointer":"/paths/~1locations~1{location_id}~1services~1{service_id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/locations/{location_id}/services/{service_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"service_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["services:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/merge-patch+json":{"schemaId":"components/schemas/ServiceUpdate","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}/services/{service_id}","href":"services/updateservice","openApiOperationId":"updateService","summary":"Update a service","securityGroups":[{"OAuth2":["services:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/ServiceUpdate","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/requestBody/content/application~1merge-patch+json/example"],"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/ServiceUpdate","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The updated service.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Service","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/200/content/application~1json/examples/service","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/200/content/application~1json/examples/package"]}},"schemaId":"components/schemas/Service","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/200/content/application~1json/examples/service","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/200/content/application~1json/examples/package"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Service","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/200/content/application~1json/examples/service","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/200/content/application~1json/examples/package"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Service","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/200/content/application~1json/examples/service","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/200/content/application~1json/examples/package"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/services/updateservice"}],"panels":[]}]},"httpPath":"/locations/{location_id}/services/{service_id}"},{"label":"Delete a service","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/services/deleteservice","routeSlug":"/en/b2b-v3/openapi/services/deleteservice","metadata":{"seo":{"title":"Delete a service","description":"Deletes a service from the catalog. Requires If-Match with the version last seen."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"deleteService","name":"Delete a service","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1services~1{service_id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete a service","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Deletes a service from the catalog. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the version last seen."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["services:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"service_id","in":"path","schemaId":"schema_491","description":"Identifier of the service.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1services~1{service_id}/delete/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1services~1{service_id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/locations/{location_id}/services/{service_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"service_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["services:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["204","400","401","403","404","406","409","412","422","428","429","500","503"],"pointer":"/locations/{location_id}/services/{service_id}","href":"services/deleteservice","openApiOperationId":"deleteService","summary":"Delete a service","securityGroups":[{"OAuth2":["services:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204","description":"The service has been deleted.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"204"},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/412/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/services/deleteservice"}],"panels":[]}]},"httpPath":"/locations/{location_id}/services/{service_id}"},{"label":"List service categories","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/services/listservicecategories","routeSlug":"/en/b2b-v3/openapi/services/listservicecategories","metadata":{"seo":{"title":"List service categories","description":"Returns the service categories of the Location. Use a category id as category_idwhen creating services."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listServiceCategories","name":"List service categories","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1service_categories/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List service categories","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the service categories of the Location. Use a category "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"category_id"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when creating services."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cursor-paginated list. Default ordering: weight desc, name, id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["services:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1service_categories/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1service_categories/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/service_categories","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["services:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/service_categories","href":"services/listservicecategories","openApiOperationId":"listServiceCategories","summary":"List service categories","securityGroups":[{"OAuth2":["services:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"A page of service categories.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ServiceCategoryList","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/ServiceCategoryList","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1service_categories/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ServiceCategoryList","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ServiceCategoryList","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/services/listservicecategories"}],"panels":[]}]},"httpPath":"/locations/{location_id}/service_categories"},{"label":"Create a service category","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/services/createservicecategory","routeSlug":"/en/b2b-v3/openapi/services/createservicecategory","metadata":{"seo":{"title":"Create a service category","description":"Creates a service category. Requires Idempotency-Key. The 201 response carries anETag header for subsequent updates."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createServiceCategory","name":"Create a service category","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1service_categories/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a service category","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Creates a service category. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"201"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response carries an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header for subsequent updates."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["services:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1service_categories/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1service_categories/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ServiceCategoryCreate","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/requestBody/content/application~1json/example"]}},"schemaId":"components/schemas/ServiceCategoryCreate","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/requestBody/content/application~1json/example"],"pointer":"/paths/~1locations~1{location_id}~1service_categories/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations/{location_id}/service_categories","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["services:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/ServiceCategoryCreate","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/requestBody/content/application~1json/example"]}},"responseCodes":["201","400","401","403","404","406","409","415","422","429","500","503"],"pointer":"/locations/{location_id}/service_categories","href":"services/createservicecategory","openApiOperationId":"createServiceCategory","summary":"Create a service category","securityGroups":[{"OAuth2":["services:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/ServiceCategoryCreate","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/requestBody/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ServiceCategoryCreate","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/requestBody/content/application~1json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"The created service category.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ServiceCategory","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/201/content/application~1json/example"]}},"schemaId":"components/schemas/ServiceCategory","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/201/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Location":{"$ref":"#/components/headers/Location"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_499"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was already used with a different body ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the first request with this key is still running ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1service_categories/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1service_categories/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_495"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1service_categories/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/ServiceCategory","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/201/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ServiceCategory","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/201/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1service_categories/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1service_categories/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/services/createservicecategory"}],"panels":[]}]},"httpPath":"/locations/{location_id}/service_categories"},{"label":"Update a service category","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/services/updateservicecategory","routeSlug":"/en/b2b-v3/openapi/services/updateservicecategory","metadata":{"seo":{"title":"Update a service category","description":"Partially updates a service category with a merge-patch body. Requires If-Match."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateServiceCategory","name":"Update a service category","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update a service category","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partially updates a service category with a merge-patch body. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["services:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"service_category_id","in":"path","schemaId":"schema_491","description":"Identifier of the service category.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/ServiceCategoryUpdate","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"schemaId":"components/schemas/ServiceCategoryUpdate","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/requestBody/content/application~1merge-patch+json/example"],"pointer":"/paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/locations/{location_id}/service_categories/{service_category_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"service_category_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["services:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/merge-patch+json":{"schemaId":"components/schemas/ServiceCategoryUpdate","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}/service_categories/{service_category_id}","href":"services/updateservicecategory","openApiOperationId":"updateServiceCategory","summary":"Update a service category","securityGroups":[{"OAuth2":["services:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/ServiceCategoryUpdate","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/requestBody/content/application~1merge-patch+json/example"],"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/ServiceCategoryUpdate","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The updated service category.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ServiceCategory","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/ServiceCategory","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ServiceCategory","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ServiceCategory","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/services/updateservicecategory"}],"panels":[]}]},"httpPath":"/locations/{location_id}/service_categories/{service_category_id}"},{"label":"Delete a service category","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/services/deleteservicecategory","routeSlug":"/en/b2b-v3/openapi/services/deleteservicecategory","metadata":{"seo":{"title":"Delete a service category","description":"Deletes a service category. Requires If-Match with the version last seen."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"deleteServiceCategory","name":"Delete a service category","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete a service category","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Deletes a service category. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the version last seen."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["services:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"service_category_id","in":"path","schemaId":"schema_491","description":"Identifier of the service category.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/locations/{location_id}/service_categories/{service_category_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"service_category_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["services:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["204","400","401","403","404","406","409","412","422","428","429","500","503"],"pointer":"/locations/{location_id}/service_categories/{service_category_id}","href":"services/deleteservicecategory","openApiOperationId":"deleteServiceCategory","summary":"Delete a service category","securityGroups":[{"OAuth2":["services:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204","description":"The service category has been deleted.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"204"},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/412/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/services/deleteservicecategory"}],"panels":[]}]},"httpPath":"/locations/{location_id}/service_categories/{service_category_id}"}],"content":{"contentType":"group","meta":{"name":"Services"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Services","showPageActions":true},{"nodeType":"markdoc","content":"The service catalog of a Location: services and their categories. Services define what\ncan be scheduled, for how long, and at what price; per-team-member overrides link the\ncatalog to the people who deliver it. A service must be linked to at least one bookable\nTeam Member to appear in availability."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/locations/{location_id}/services","summary":"List services","prefix":{"name":"get","color":"get"},"badges":[],"link":"/services/listservices","deprecated":false},{"title":"/locations/{location_id}/services","summary":"Create a service","prefix":{"name":"post","color":"post"},"badges":[],"link":"/services/createservice","deprecated":false},{"title":"/locations/{location_id}/services/{service_id}","summary":"Get a service","prefix":{"name":"get","color":"get"},"badges":[],"link":"/services/getservice","deprecated":false},{"title":"/locations/{location_id}/services/{service_id}","summary":"Update a service","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/services/updateservice","deprecated":false},{"title":"/locations/{location_id}/services/{service_id}","summary":"Delete a service","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/services/deleteservice","deprecated":false},{"title":"/locations/{location_id}/service_categories","summary":"List service categories","prefix":{"name":"get","color":"get"},"badges":[],"link":"/services/listservicecategories","deprecated":false},{"title":"/locations/{location_id}/service_categories","summary":"Create a service category","prefix":{"name":"post","color":"post"},"badges":[],"link":"/services/createservicecategory","deprecated":false},{"title":"/locations/{location_id}/service_categories/{service_category_id}","summary":"Update a service category","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/services/updateservicecategory","deprecated":false},{"title":"/locations/{location_id}/service_categories/{service_category_id}","summary":"Delete a service category","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/services/deleteservicecategory","deprecated":false}]}]}]}]}},{"type":"group","label":"Products","link":"/en/b2b-v3/openapi/products","routeSlug":"/en/b2b-v3/openapi/products","items":[{"label":"List products","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/products/listproducts","routeSlug":"/en/b2b-v3/openapi/products/listproducts","metadata":{"seo":{"title":"List products","description":"Returns the minimal product catalog fields available in P0: id, title,price_minor, and unit. Inventory levels, balances, cost, and standalone productsales are not part of the preview scope."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listProducts","name":"List products","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1products/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List products","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the minimal product catalog fields available in P0: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"title"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"price_minor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Inventory levels, balances, cost, and standalone product"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"sales are not part of the preview scope."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cursor-paginated list. Default ordering: title, id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["products:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1products/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"query","in":"query","schemaId":"schema_492","description":"Search query."},{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1products/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/products","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"query","in":"query","required":false,"schemaId":"schema_492"},{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["products:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}/products","href":"products/listproducts","openApiOperationId":"listProducts","summary":"List products","securityGroups":[{"OAuth2":["products:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"OK","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ProductList"}},"schemaId":"components/schemas/ProductList","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1products/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1products/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1products/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1products/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1products/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1products/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1products/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ProductList","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ProductList"}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1products/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1products/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1products/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1products/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1products/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1products/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1products/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/products/listproducts"}],"panels":[]}]},"httpPath":"/locations/{location_id}/products"}],"content":{"contentType":"group","meta":{"name":"Products"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Products","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Minimal product catalog read: enough to put a product line on a visit ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", title, price, unit). Inventory levels, categories, cost price and product management are outside the first iteration."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/locations/{location_id}/products","summary":"List products","prefix":{"name":"get","color":"get"},"badges":[],"link":"/products/listproducts","deprecated":false}]}]}]}]}},{"type":"group","label":"Team Members","link":"/en/b2b-v3/openapi/team-members","routeSlug":"/en/b2b-v3/openapi/team-members","items":[{"label":"List team members","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/team-members/listteammembers","routeSlug":"/en/b2b-v3/openapi/team-members/listteammembers","metadata":{"seo":{"title":"List team members","description":"Returns the Team Members of the Location as a cursor-paginated list. The baserepresentation contains name, position, and bookable services; Team Member personalcontact data is not exposed in the preview scope."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listTeamMembers","name":"List team members","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1team_members/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List team members","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the Team Members of the Location as a cursor-paginated list. The base"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"representation contains name, position, and bookable services; Team Member personal"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"contact data is not exposed in the preview scope."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cursor-paginated list. Default ordering: name, id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1team_members/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/team_members","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/team_members","href":"team-members/listteammembers","openApiOperationId":"listTeamMembers","summary":"List team members","securityGroups":[{"OAuth2":["team_members:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"A page of team members.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberList","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/TeamMemberList","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1team_members/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TeamMemberList","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberList","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/team-members/listteammembers"}],"panels":[]}]},"httpPath":"/locations/{location_id}/team_members"},{"label":"Create a team member","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/team-members/createteammember","routeSlug":"/en/b2b-v3/openapi/team-members/createteammember","metadata":{"seo":{"title":"Create a team member","description":"Creates a Team Member in the Location. After creating, set the working schedule(PATCH .../schedule) and link services — otherwise the member does not appear inavailability search. Requires Idempotency-Key."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createTeamMember","name":"Create a team member","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1team_members/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a team member","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Creates a Team Member in the Location. After creating, set the working schedule"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH .../schedule"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") and link services — otherwise the member does not appear in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"availability search. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"access_invitation"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is an atomic create-and-invite convenience for user-delegated"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authorization Code credentials only: when present, the token must also carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Client Credentials and restricted keys cannot use it in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the first iteration. If the extra scope or credential class is not allowed, the request"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"fails before creating the Team Member with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"403 missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TeamMemberCreate","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/requestBody/content/application~1json/example"]}},"schemaId":"components/schemas/TeamMemberCreate","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/requestBody/content/application~1json/example"],"pointer":"/paths/~1locations~1{location_id}~1team_members/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations/{location_id}/team_members","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TeamMemberCreate","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/requestBody/content/application~1json/example"]}},"responseCodes":["201","400","401","403","404","406","409","415","422","429","500","503"],"pointer":"/locations/{location_id}/team_members","href":"team-members/createteammember","openApiOperationId":"createTeamMember","summary":"Create a team member","securityGroups":[{"OAuth2":["team_members:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/TeamMemberCreate","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/requestBody/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TeamMemberCreate","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/requestBody/content/application~1json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"The created team member.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMember","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/201/content/application~1json/examples/team_member"]}},"schemaId":"components/schemas/TeamMember","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/201/content/application~1json/examples/team_member"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Location":{"$ref":"#/components/headers/Location"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_499"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was already used with a different body ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the first request with this key is still running ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1team_members/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1team_members/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_495"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1team_members/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/TeamMember","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/201/content/application~1json/examples/team_member"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMember","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/201/content/application~1json/examples/team_member"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1team_members/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1team_members/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/team-members/createteammember"}],"panels":[]}]},"httpPath":"/locations/{location_id}/team_members"},{"label":"Get a team member","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/team-members/getteammember","routeSlug":"/en/b2b-v3/openapi/team-members/getteammember","metadata":{"seo":{"title":"Get a team member","description":"Returns a single Team Member. The response carries an ETag header for a subsequentPATCH or DELETE."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getTeamMember","name":"Get a team member","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get a team member","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns a single Team Member. The response carries an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header for a subsequent"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DELETE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"team_member_id","in":"path","schemaId":"schema_491","description":"Identifier of the Team Member.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/team_members/{team_member_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"team_member_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/team_members/{team_member_id}","href":"team-members/getteammember","openApiOperationId":"getTeamMember","summary":"Get a team member","securityGroups":[{"OAuth2":["team_members:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The team member.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMember","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/200/content/application~1json/examples/team_member"]}},"schemaId":"components/schemas/TeamMember","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/200/content/application~1json/examples/team_member"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TeamMember","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/200/content/application~1json/examples/team_member"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMember","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/200/content/application~1json/examples/team_member"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/team-members/getteammember"}],"panels":[]}]},"httpPath":"/locations/{location_id}/team_members/{team_member_id}"},{"label":"Update a team member","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/team-members/updateteammember","routeSlug":"/en/b2b-v3/openapi/team-members/updateteammember","metadata":{"seo":{"title":"Update a team member","description":"Partially updates a Team Member with a merge-patch body. services, when present,replaces the full set of bookable service links; each link is keyed by service_id andcarries the same override fields as on Service. Missing services leaves links unchanged,services: [] unlinks every service, and null override fields inherit the Servicedefault. Requires If-Match; changing links moves the ETag on both the Team Member andaffected Service resources."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateTeamMember","name":"Update a team member","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update a team member","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partially updates a Team Member with a merge-patch body. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"services"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", when present,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"replaces the full set of bookable service links; each link is keyed by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"service_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"carries the same override fields as on Service. Missing "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"services"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" leaves links unchanged,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"services: []"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" unlinks every service, and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" override fields inherit the Service"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"default. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; changing links moves the ETag on both the Team Member and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"affected Service resources."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"team_member_id","in":"path","schemaId":"schema_491","description":"Identifier of the Team Member.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/TeamMemberUpdate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"schemaId":"components/schemas/TeamMemberUpdate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/requestBody/content/application~1merge-patch+json/example"],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/locations/{location_id}/team_members/{team_member_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"team_member_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/merge-patch+json":{"schemaId":"components/schemas/TeamMemberUpdate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}/team_members/{team_member_id}","href":"team-members/updateteammember","openApiOperationId":"updateTeamMember","summary":"Update a team member","securityGroups":[{"OAuth2":["team_members:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/TeamMemberUpdate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/requestBody/content/application~1merge-patch+json/example"],"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/TeamMemberUpdate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The updated team member.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMember","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/200/content/application~1json/examples/team_member"]}},"schemaId":"components/schemas/TeamMember","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/200/content/application~1json/examples/team_member"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TeamMember","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/200/content/application~1json/examples/team_member"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMember","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/200/content/application~1json/examples/team_member"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/team-members/updateteammember"}],"panels":[]}]},"httpPath":"/locations/{location_id}/team_members/{team_member_id}"},{"label":"Delete a team member","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/team-members/deleteteammember","routeSlug":"/en/b2b-v3/openapi/team-members/deleteteammember","metadata":{"seo":{"title":"Delete a team member","description":"Removes a Team Member from the Location. Requires If-Match with the version lastseen."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"deleteTeamMember","name":"Delete a team member","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete a team member","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Removes a Team Member from the Location. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the version last"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"seen."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"team_member_id","in":"path","schemaId":"schema_491","description":"Identifier of the Team Member.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/locations/{location_id}/team_members/{team_member_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"team_member_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["204","400","401","403","404","406","409","412","422","428","429","500","503"],"pointer":"/locations/{location_id}/team_members/{team_member_id}","href":"team-members/deleteteammember","openApiOperationId":"deleteTeamMember","summary":"Delete a team member","securityGroups":[{"OAuth2":["team_members:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204","description":"The team member has been deleted.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"204"},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/412/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/team-members/deleteteammember"}],"panels":[]}]},"httpPath":"/locations/{location_id}/team_members/{team_member_id}"},{"label":"Get a team member's schedule","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/team-members/getteammemberschedule","routeSlug":"/en/b2b-v3/openapi/team-members/getteammemberschedule","metadata":{"seo":{"title":"Get a team member's schedule","description":"Returns the configured working schedule of a Team Member for a date range — thedays and working slots set by the business. This is not availability: free bookableslots come from GET /locations/{location_id}/availability."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getTeamMemberSchedule","name":"Get a team member's schedule","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get a team member's schedule","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"configured working schedule"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of a Team Member for a date range — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"days and working slots set by the business. This is not availability: free bookable"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"slots come from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /locations/{location_id}/availability"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The response carries an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header for a subsequent schedule "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"team_member_id","in":"path","schemaId":"schema_491","description":"Identifier of the Team Member.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"date_from","in":"query","schemaId":"schema_500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"First date of the range (inclusive), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"YYYY-MM-DD"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"date_to","in":"query","schemaId":"schema_500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Last date of the range (inclusive), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"YYYY-MM-DD"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/team_members/{team_member_id}/schedule","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"team_member_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"date_from","in":"query","required":true,"schemaId":"schema_500"},{"name":"date_to","in":"query","required":true,"schemaId":"schema_500"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/team_members/{team_member_id}/schedule","href":"team-members/getteammemberschedule","openApiOperationId":"getTeamMemberSchedule","summary":"Get a team member's schedule","securityGroups":[{"OAuth2":["team_members:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Working days within the requested range.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberSchedule","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/TeamMemberSchedule","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TeamMemberSchedule","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberSchedule","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/team-members/getteammemberschedule"}],"panels":[]}]},"httpPath":"/locations/{location_id}/team_members/{team_member_id}/schedule"},{"label":"Update a team member's schedule","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/team-members/updateteammemberschedule","routeSlug":"/en/b2b-v3/openapi/team-members/updateteammemberschedule","metadata":{"seo":{"title":"Update a team member's schedule","description":"Updates the working schedule as a merge-patch map keyed by date: each key is aYYYY-MM-DD date, the value sets the working slots of that day, and null clears theday. Dates absent from the body are left unchanged. Times are wall-clock HH:MM inthe Location's timezone. Requires If-Match with the ETag from the schedule read."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateTeamMemberSchedule","name":"Update a team member's schedule","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update a team member's schedule","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Updates the working schedule as a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"merge-patch map keyed by date"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": each key is a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"YYYY-MM-DD"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" date, the value sets the working slots of that day, and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"day. Dates absent from the body are left unchanged. Times are wall-clock "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"HH:MM"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the Location's timezone. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from the schedule read."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"team_member_id","in":"path","schemaId":"schema_491","description":"Identifier of the Team Member.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/TeamMemberSchedulePatch","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/requestBody/content/application~1merge-patch+json/example"]}},"schemaId":"components/schemas/TeamMemberSchedulePatch","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/requestBody/content/application~1merge-patch+json/example"],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/locations/{location_id}/team_members/{team_member_id}/schedule","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"team_member_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/merge-patch+json":{"schemaId":"components/schemas/TeamMemberSchedulePatch","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/requestBody/content/application~1merge-patch+json/example"]}},"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}/team_members/{team_member_id}/schedule","href":"team-members/updateteammemberschedule","openApiOperationId":"updateTeamMemberSchedule","summary":"Update a team member's schedule","securityGroups":[{"OAuth2":["team_members:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/TeamMemberSchedulePatch","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/requestBody/content/application~1merge-patch+json/example"],"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/TeamMemberSchedulePatch","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/requestBody/content/application~1merge-patch+json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The days updated by this request.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberSchedule","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/TeamMemberSchedule","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TeamMemberSchedule","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberSchedule","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/team-members/updateteammemberschedule"}],"panels":[]}]},"httpPath":"/locations/{location_id}/team_members/{team_member_id}/schedule"},{"label":"List location access roles","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/team-members/listlocationaccessroles","routeSlug":"/en/b2b-v3/openapi/team-members/listlocationaccessroles","metadata":{"seo":{"title":"List location access roles","description":"Returns public role ids and titles only; internal permission slugs are never exposed."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listLocationAccessRoles","name":"List location access roles","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1access_roles/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List location access roles","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns public role ids and titles only; internal permission slugs are never exposed."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cursor-paginated list. Default ordering: title, role_id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:manage_access"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1access_roles/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1access_roles/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/access_roles","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:manage_access"]}],"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}/access_roles","href":"team-members/listlocationaccessroles","openApiOperationId":"listLocationAccessRoles","summary":"List location access roles"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"OK","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/LocationAccessRoleList"}},"schemaId":"components/schemas/LocationAccessRoleList","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1access_roles/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1access_roles/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1access_roles/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1access_roles/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1access_roles/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1access_roles/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1access_roles/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/LocationAccessRoleList","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/LocationAccessRoleList"}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1access_roles/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1access_roles/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1access_roles/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1access_roles/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1access_roles/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1access_roles/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1access_roles/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/team-members/listlocationaccessroles"}],"panels":[]}]},"httpPath":"/locations/{location_id}/access_roles"},{"label":"Get team member access","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/team-members/getteammemberaccess","routeSlug":"/en/b2b-v3/openapi/team-members/getteammemberaccess","metadata":{"seo":{"title":"Get team member access","description":"Returns current system-access status for a Team Member: none, invited, or active, plus public role_id and pending invitation timestamps. The response carries a strong ETag for a subsequent access PATCH."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getTeamMemberAccess","name":"Get team member access","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get team member access","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns current system-access status for a Team Member: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"none"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invited"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"active"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", plus public "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"role_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and pending invitation timestamps. The response carries a strong "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for a subsequent access "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:manage_access"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"team_member_id","in":"path","schemaId":"schema_491","description":"Identifier of the Team Member.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/team_members/{team_member_id}/access","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"team_member_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:manage_access"]}],"responseCodes":["200","401","403","404","406","429","500","503"],"pointer":"/locations/{location_id}/team_members/{team_member_id}/access","href":"team-members/getteammemberaccess","openApiOperationId":"getTeamMemberAccess","summary":"Get team member access"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"OK","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberAccess"}},"schemaId":"components/schemas/TeamMemberAccess","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TeamMemberAccess","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberAccess"}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/406/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/team-members/getteammemberaccess"}],"panels":[]}]},"httpPath":"/locations/{location_id}/team_members/{team_member_id}/access"},{"label":"Update team member access","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/team-members/updateteammemberaccess","routeSlug":"/en/b2b-v3/openapi/team-members/updateteammemberaccess","metadata":{"seo":{"title":"Update team member access","description":"Merge-patch access settings. Only role_id is mutable; unavailable roles fail with 422 role_not_assignable. Requires If-Match with the ETag from getTeamMemberAccess (or a prior successful write)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateTeamMemberAccess","name":"Update team member access","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update team member access","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Merge-patch access settings. Only "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"role_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is mutable; unavailable roles fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 role_not_assignable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"getTeamMemberAccess"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (or a prior successful write)."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:manage_access"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"team_member_id","in":"path","schemaId":"schema_491","description":"Identifier of the Team Member.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/TeamMemberAccessUpdate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/requestBody/content/application~1merge-patch+json/example"]}},"schemaId":"components/schemas/TeamMemberAccessUpdate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/requestBody/content/application~1merge-patch+json/example"],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/locations/{location_id}/team_members/{team_member_id}/access","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"team_member_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:manage_access"]}],"requestBody":{"application/merge-patch+json":{"schemaId":"components/schemas/TeamMemberAccessUpdate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/requestBody/content/application~1merge-patch+json/example"]}},"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}/team_members/{team_member_id}/access","href":"team-members/updateteammemberaccess","openApiOperationId":"updateTeamMemberAccess","summary":"Update team member access"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/TeamMemberAccessUpdate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/requestBody/content/application~1merge-patch+json/example"],"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/TeamMemberAccessUpdate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/requestBody/content/application~1merge-patch+json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"OK","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberAccess"}},"schemaId":"components/schemas/TeamMemberAccess","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TeamMemberAccess","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberAccess"}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/team-members/updateteammemberaccess"}],"panels":[]}]},"httpPath":"/locations/{location_id}/team_members/{team_member_id}/access"},{"label":"Revoke team member access","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/team-members/revoketeammemberaccess","routeSlug":"/en/b2b-v3/openapi/team-members/revoketeammemberaccess","metadata":{"seo":{"title":"Revoke team member access","description":"Revokes pending or active system access and returns the Team Member to none; the Team Member record is not deleted. The last location owner cannot be revoked (409 last_location_owner). Requires Idempotency-Key. The 200 response carries a fresh access ETag."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"revokeTeamMemberAccess","name":"Revoke team member access","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Revoke team member access","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Revokes pending or active system access and returns the Team Member to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"none"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; the Team Member record is not deleted. The last location owner cannot be revoked ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response carries a fresh access "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:manage_access"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"team_member_id","in":"path","schemaId":"schema_491","description":"Identifier of the Team Member.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/locations/{location_id}/team_members/{team_member_id}/access","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"team_member_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:manage_access"]}],"responseCodes":["200","401","403","404","406","409","429","500","503"],"pointer":"/locations/{location_id}/team_members/{team_member_id}/access","href":"team-members/revoketeammemberaccess","openApiOperationId":"revokeTeamMemberAccess","summary":"Revoke team member access"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"OK","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberAccess"}},"schemaId":"components/schemas/TeamMemberAccess","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TeamMemberAccess","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberAccess"}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/409/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/team-members/revoketeammemberaccess"}],"panels":[]}]},"httpPath":"/locations/{location_id}/team_members/{team_member_id}/access"},{"label":"Send team member invitation","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/team-members/sendteammemberinvitation","routeSlug":"/en/b2b-v3/openapi/team-members/sendteammemberinvitation","metadata":{"seo":{"title":"Send team member invitation","description":"Sends or resends delivery for the single pending invitation of this Team Member.Delivery contact is set only at Team Member create via write-only access_invitation.phone /access_invitation.email; this resend uses the stored delivery target and does not accepta contact override in the body. 422 invitation_contact_required when no delivery contactexists; 409 invitation_already_pending when a distinct pending invitation already exists;409 access_already_active when the Team Member already has active access. RequiresIdempotency-Key."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"sendTeamMemberInvitation","name":"Send team member invitation","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Send team member invitation","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sends or resends delivery for the single pending invitation of this Team Member."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Delivery contact is set only at Team Member create via write-only "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"access_invitation.phone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"access_invitation.email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; this resend uses the stored delivery target and does not accept"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a contact override in the body. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 invitation_contact_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no delivery contact"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exists; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 invitation_already_pending"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when a distinct pending invitation already exists;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 access_already_active"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when the Team Member already has active access. Requires"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:manage_access"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"team_member_id","in":"path","schemaId":"schema_491","description":"Identifier of the Team Member.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TeamMemberInvitationCreate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/requestBody/content/application~1json/example"]}},"schemaId":"components/schemas/TeamMemberInvitationCreate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/requestBody/content/application~1json/example"],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations/{location_id}/team_members/{team_member_id}/invitation","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"team_member_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:manage_access"]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TeamMemberInvitationCreate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/requestBody/content/application~1json/example"]}},"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}/team_members/{team_member_id}/invitation","href":"team-members/sendteammemberinvitation","openApiOperationId":"sendTeamMemberInvitation","summary":"Send team member invitation"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/TeamMemberInvitationCreate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/requestBody/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TeamMemberInvitationCreate","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/requestBody/content/application~1json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"OK","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberAccess"}},"schemaId":"components/schemas/TeamMemberAccess","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TeamMemberAccess","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TeamMemberAccess"}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/team-members/sendteammemberinvitation"}],"panels":[]}]},"httpPath":"/locations/{location_id}/team_members/{team_member_id}/invitation"}],"content":{"contentType":"group","meta":{"name":"Team Members"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Team Members","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Team Members deliver services and own the calendars that appointments are scheduled into."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This section covers the Team Member directory and each member's working schedule — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"configured working days that availability search is computed from."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/locations/{location_id}/team_members","summary":"List team members","prefix":{"name":"get","color":"get"},"badges":[],"link":"/team-members/listteammembers","deprecated":false},{"title":"/locations/{location_id}/team_members","summary":"Create a team member","prefix":{"name":"post","color":"post"},"badges":[],"link":"/team-members/createteammember","deprecated":false},{"title":"/locations/{location_id}/team_members/{team_member_id}","summary":"Get a team member","prefix":{"name":"get","color":"get"},"badges":[],"link":"/team-members/getteammember","deprecated":false},{"title":"/locations/{location_id}/team_members/{team_member_id}","summary":"Update a team member","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/team-members/updateteammember","deprecated":false},{"title":"/locations/{location_id}/team_members/{team_member_id}","summary":"Delete a team member","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/team-members/deleteteammember","deprecated":false},{"title":"/locations/{location_id}/team_members/{team_member_id}/schedule","summary":"Get a team member's schedule","prefix":{"name":"get","color":"get"},"badges":[],"link":"/team-members/getteammemberschedule","deprecated":false},{"title":"/locations/{location_id}/team_members/{team_member_id}/schedule","summary":"Update a team member's schedule","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/team-members/updateteammemberschedule","deprecated":false},{"title":"/locations/{location_id}/access_roles","summary":"List location access roles","prefix":{"name":"get","color":"get"},"badges":[],"link":"/team-members/listlocationaccessroles","deprecated":false},{"title":"/locations/{location_id}/team_members/{team_member_id}/access","summary":"Get team member access","prefix":{"name":"get","color":"get"},"badges":[],"link":"/team-members/getteammemberaccess","deprecated":false},{"title":"/locations/{location_id}/team_members/{team_member_id}/access","summary":"Update team member access","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/team-members/updateteammemberaccess","deprecated":false},{"title":"/locations/{location_id}/team_members/{team_member_id}/access","summary":"Revoke team member access","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/team-members/revoketeammemberaccess","deprecated":false},{"title":"/locations/{location_id}/team_members/{team_member_id}/invitation","summary":"Send team member invitation","prefix":{"name":"post","color":"post"},"badges":[],"link":"/team-members/sendteammemberinvitation","deprecated":false}]}]}]}]}},{"type":"group","label":"Positions","link":"/en/b2b-v3/openapi/positions","routeSlug":"/en/b2b-v3/openapi/positions","items":[{"label":"List positions","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/positions/listpositions","routeSlug":"/en/b2b-v3/openapi/positions/listpositions","metadata":{"seo":{"title":"List positions","description":"Returns the position directory of the Location. Reference a position from a TeamMember via position_id."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listPositions","name":"List positions","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1positions/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List positions","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the position directory of the Location. Reference a position from a Team"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Member via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cursor-paginated list. Default ordering: weight desc, title, id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1positions/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1positions/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/positions","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/positions","href":"positions/listpositions","openApiOperationId":"listPositions","summary":"List positions","securityGroups":[{"OAuth2":["team_members:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"A page of positions.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PositionList","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/PositionList","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1positions/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PositionList","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PositionList","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/positions/listpositions"}],"panels":[]}]},"httpPath":"/locations/{location_id}/positions"},{"label":"Create a position","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/positions/createposition","routeSlug":"/en/b2b-v3/openapi/positions/createposition","metadata":{"seo":{"title":"Create a position","description":"Creates a position. Requires Idempotency-Key."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createPosition","name":"Create a position","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1positions/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a position","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Creates a position. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1positions/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1positions/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PositionCreate","exampleIds":["paths/~1locations~1{location_id}~1positions/post/requestBody/content/application~1json/example"]}},"schemaId":"components/schemas/PositionCreate","exampleIds":["paths/~1locations~1{location_id}~1positions/post/requestBody/content/application~1json/example"],"pointer":"/paths/~1locations~1{location_id}~1positions/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations/{location_id}/positions","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/PositionCreate","exampleIds":["paths/~1locations~1{location_id}~1positions/post/requestBody/content/application~1json/example"]}},"responseCodes":["201","400","401","403","404","406","409","415","422","429","500","503"],"pointer":"/locations/{location_id}/positions","href":"positions/createposition","openApiOperationId":"createPosition","summary":"Create a position","securityGroups":[{"OAuth2":["team_members:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/PositionCreate","exampleIds":["paths/~1locations~1{location_id}~1positions/post/requestBody/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PositionCreate","exampleIds":["paths/~1locations~1{location_id}~1positions/post/requestBody/content/application~1json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"The created position.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Position","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/201/content/application~1json/example"]}},"schemaId":"components/schemas/Position","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/201/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Location":{"$ref":"#/components/headers/Location"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_499"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was already used with a different body ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the first request with this key is still running ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1positions/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1positions/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_495"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1positions/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/Position","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/201/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Position","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/201/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1positions/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1positions/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/positions/createposition"}],"panels":[]}]},"httpPath":"/locations/{location_id}/positions"},{"label":"Get a position","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/positions/getposition","routeSlug":"/en/b2b-v3/openapi/positions/getposition","metadata":{"seo":{"title":"Get a position","description":"Returns a single position. The response carries an ETag header for a subsequentPATCH or DELETE."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getPosition","name":"Get a position","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1positions~1{position_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get a position","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns a single position. The response carries an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header for a subsequent"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DELETE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"position_id","in":"path","schemaId":"schema_491","description":"Identifier of the position.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1positions~1{position_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/positions/{position_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"position_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/positions/{position_id}","href":"positions/getposition","openApiOperationId":"getPosition","summary":"Get a position","securityGroups":[{"OAuth2":["team_members:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The position.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Position","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/Position","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Position","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Position","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/positions/getposition"}],"panels":[]}]},"httpPath":"/locations/{location_id}/positions/{position_id}"},{"label":"Update a position","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/positions/updateposition","routeSlug":"/en/b2b-v3/openapi/positions/updateposition","metadata":{"seo":{"title":"Update a position","description":"Partially updates a position with a merge-patch body. Requires If-Match."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updatePosition","name":"Update a position","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1positions~1{position_id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update a position","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partially updates a position with a merge-patch body. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"position_id","in":"path","schemaId":"schema_491","description":"Identifier of the position.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1positions~1{position_id}/patch/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1positions~1{position_id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/PositionUpdate","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"schemaId":"components/schemas/PositionUpdate","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/requestBody/content/application~1merge-patch+json/example"],"pointer":"/paths/~1locations~1{location_id}~1positions~1{position_id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/locations/{location_id}/positions/{position_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"position_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/merge-patch+json":{"schemaId":"components/schemas/PositionUpdate","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}/positions/{position_id}","href":"positions/updateposition","openApiOperationId":"updatePosition","summary":"Update a position","securityGroups":[{"OAuth2":["team_members:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/PositionUpdate","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/requestBody/content/application~1merge-patch+json/example"],"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/PositionUpdate","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The updated position.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Position","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/Position","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Position","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Position","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/positions/updateposition"}],"panels":[]}]},"httpPath":"/locations/{location_id}/positions/{position_id}"},{"label":"Delete a position","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/positions/deleteposition","routeSlug":"/en/b2b-v3/openapi/positions/deleteposition","metadata":{"seo":{"title":"Delete a position","description":"Deletes a position. Requires If-Match with the version last seen."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"deletePosition","name":"Delete a position","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1positions~1{position_id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete a position","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Deletes a position. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the version last seen."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["team_members:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"position_id","in":"path","schemaId":"schema_491","description":"Identifier of the position.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1positions~1{position_id}/delete/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1positions~1{position_id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/locations/{location_id}/positions/{position_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"position_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["team_members:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["204","400","401","403","404","406","409","412","422","428","429","500","503"],"pointer":"/locations/{location_id}/positions/{position_id}","href":"positions/deleteposition","openApiOperationId":"deletePosition","summary":"Delete a position","securityGroups":[{"OAuth2":["team_members:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204","description":"The position has been deleted.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"204"},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/412/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/positions/deleteposition"}],"panels":[]}]},"httpPath":"/locations/{location_id}/positions/{position_id}"}],"content":{"contentType":"group","meta":{"name":"Positions"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Positions","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Positions are the job-title directory of the Team Member domain (for example"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"\"Barber\" or \"Senior stylist\"). Create positions first, then reference them from Team"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Members via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/locations/{location_id}/positions","summary":"List positions","prefix":{"name":"get","color":"get"},"badges":[],"link":"/positions/listpositions","deprecated":false},{"title":"/locations/{location_id}/positions","summary":"Create a position","prefix":{"name":"post","color":"post"},"badges":[],"link":"/positions/createposition","deprecated":false},{"title":"/locations/{location_id}/positions/{position_id}","summary":"Get a position","prefix":{"name":"get","color":"get"},"badges":[],"link":"/positions/getposition","deprecated":false},{"title":"/locations/{location_id}/positions/{position_id}","summary":"Update a position","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/positions/updateposition","deprecated":false},{"title":"/locations/{location_id}/positions/{position_id}","summary":"Delete a position","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/positions/deleteposition","deprecated":false}]}]}]}]}},{"type":"separator","label":"Clients","content":null},{"type":"group","label":"Clients","link":"/en/b2b-v3/openapi/clients","routeSlug":"/en/b2b-v3/openapi/clients","items":[{"label":"List and search clients","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/clients/listclients","routeSlug":"/en/b2b-v3/openapi/clients/listclients","metadata":{"seo":{"title":"List and search clients","description":"Searches the client base of the Location. Exact phone and email contact searches require clients:read_contact plus the subject contact permission; without that scope the API returns 403 missing_scope/permission_denied, not an empty result. Free-text query remains under clients:read. Contact fields use the redaction contract when contact access is absent. This endpoint is rate-limited.\\n\\nCursor-paginated list. Default ordering: display_name, id tie-breaker. Cursors use the cursor query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with 422 validation_failed using field codes expired_cursor, invalid_cursor, or foreign_cursor."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listClients","name":"List and search clients","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1clients/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List and search clients","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Searches the client base of the Location. Exact "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"phone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" contact searches require "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" plus the subject contact permission; without that scope the API returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"403 missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"/"},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not an empty result. Free-text "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"query"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" remains under "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Contact fields use the redaction contract when contact access is absent. This endpoint is rate-limited.\\n\\nCursor-paginated list. Default ordering: display_name, id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["clients:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1clients/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"phone","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Exact phone number to search for, in international format. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; without it the response is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"403"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not an empty list."},"children":[]}]}]}]},{"name":"email","in":"query","schemaId":"schema_501","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Exact email to search for. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; without it the response is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"403"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not an empty list."},"children":[]}]}]}]},{"name":"query","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Free-text search across non-sensitive client display fields; contact-field exact search uses "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"phone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"/"},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1clients/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/clients","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"phone","in":"query","required":false,"schemaId":"schema_492"},{"name":"email","in":"query","required":false,"schemaId":"schema_501"},{"name":"query","in":"query","required":false,"schemaId":"schema_492"},{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["clients:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/clients","href":"clients/listclients","openApiOperationId":"listClients","summary":"List and search clients","securityGroups":[{"OAuth2":["clients:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"A page of clients matching the search.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ClientList","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/ClientList","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1clients/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ClientList","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ClientList","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/clients/listclients"}],"panels":[]}]},"httpPath":"/locations/{location_id}/clients"},{"label":"Create a client","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/clients/createclient","routeSlug":"/en/b2b-v3/openapi/clients/createclient","metadata":{"seo":{"title":"Create a client","description":"Creates a client. name and phone are required. The phone number is deduplicatedwithin the Location: if another (non-deleted) client already owns it, the requestfails with 422 phone_taken. That signal is part of clients:write (noclients:read_contact required); it does not reveal the other client's id or contacts.Phone-bearing writes are audited and rate-limited against enumeration. RequiresIdempotency-Key."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createClient","name":"Create a client","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1clients/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a client","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Creates a client. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"name"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"phone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are required. The phone number is deduplicated"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"within the Location: if another (non-deleted) client already owns it, the request"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 phone_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". That signal is part of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (no"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" required); it does not reveal the other client's id or contacts."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Phone-bearing writes are audited and rate-limited against enumeration. Requires"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Contact fields in the response follow the redaction contract: without"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" they are returned as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and listed in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redacted_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"never as a placeholder string."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["clients:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1clients/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1clients/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ClientCreate","exampleIds":["paths/~1locations~1{location_id}~1clients/post/requestBody/content/application~1json/example"]}},"schemaId":"components/schemas/ClientCreate","exampleIds":["paths/~1locations~1{location_id}~1clients/post/requestBody/content/application~1json/example"],"pointer":"/paths/~1locations~1{location_id}~1clients/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations/{location_id}/clients","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["clients:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/ClientCreate","exampleIds":["paths/~1locations~1{location_id}~1clients/post/requestBody/content/application~1json/example"]}},"responseCodes":["201","400","401","403","404","406","409","415","422","429","500","503"],"pointer":"/locations/{location_id}/clients","href":"clients/createclient","openApiOperationId":"createClient","summary":"Create a client","securityGroups":[{"OAuth2":["clients:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/ClientCreate","exampleIds":["paths/~1locations~1{location_id}~1clients/post/requestBody/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ClientCreate","exampleIds":["paths/~1locations~1{location_id}~1clients/post/requestBody/content/application~1json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"The created client.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Client","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/201/content/application~1json/examples/client"]}},"schemaId":"components/schemas/Client","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/201/content/application~1json/examples/client"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Location":{"$ref":"#/components/headers/Location"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_499"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was already used with a different body ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the first request with this key is still running ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1clients/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1clients/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_495"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Validation failed, or the phone number already belongs to another client ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"phone_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/422/content/application~1problem+json/examples/phone_taken"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/422/content/application~1problem+json/examples/phone_taken"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1clients/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/Client","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/201/content/application~1json/examples/client"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Client","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/201/content/application~1json/examples/client"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1clients/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1clients/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/422/content/application~1problem+json/examples/phone_taken"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/422/content/application~1problem+json/examples/phone_taken"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/clients/createclient"}],"panels":[]}]},"httpPath":"/locations/{location_id}/clients"},{"label":"Get a client","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/clients/getclient","routeSlug":"/en/b2b-v3/openapi/clients/getclient","metadata":{"seo":{"title":"Get a client","description":"Returns a single client. Contact fields (phone, email, additional_phone)require clients:read_contact plus the subject's contact permission — otherwise theyare returned as null and listed in redacted_fields instead of exposing a contact string. The response carries anETag header for a subsequent PATCH or DELETE."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getClient","name":"Get a client","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1clients~1{client_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get a client","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns a single client. Contact fields ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"phone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"additional_phone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"require "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" plus the subject's contact permission — otherwise they"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"are returned as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and listed in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redacted_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" instead of exposing a contact string. The response carries an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header for a subsequent "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DELETE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["clients:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"client_id","in":"path","schemaId":"schema_491","description":"Identifier of the client.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1clients~1{client_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/clients/{client_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"client_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["clients:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/clients/{client_id}","href":"clients/getclient","openApiOperationId":"getClient","summary":"Get a client","securityGroups":[{"OAuth2":["clients:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The client.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Client","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/200/content/application~1json/examples/client"]}},"schemaId":"components/schemas/Client","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/200/content/application~1json/examples/client"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Client","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/200/content/application~1json/examples/client"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Client","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/200/content/application~1json/examples/client"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/clients/getclient"}],"panels":[]}]},"httpPath":"/locations/{location_id}/clients/{client_id}"},{"label":"Update a client","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/clients/updateclient","routeSlug":"/en/b2b-v3/openapi/clients/updateclient","metadata":{"seo":{"title":"Update a client","description":"Partially updates a client with a merge-patch body. Requires If-Match. Changing thephone to a number owned by another client fails with 422 phone_taken — the sameclients:write signal as on create (audited and rate-limited; no other client identityis returned). Clearing a nullable field is done with null; clearing contact fieldsrequires contact write access."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateClient","name":"Update a client","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1clients~1{client_id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update a client","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partially updates a client with a merge-patch body. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Changing the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"phone to a number owned by another client fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 phone_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" signal as on create (audited and rate-limited; no other client identity"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is returned). Clearing a nullable field is done with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; clearing contact fields"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"requires contact write access."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["clients:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"client_id","in":"path","schemaId":"schema_491","description":"Identifier of the client.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1clients~1{client_id}/patch/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1clients~1{client_id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/ClientUpdate","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"schemaId":"components/schemas/ClientUpdate","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/requestBody/content/application~1merge-patch+json/example"],"pointer":"/paths/~1locations~1{location_id}~1clients~1{client_id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/locations/{location_id}/clients/{client_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"client_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["clients:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/merge-patch+json":{"schemaId":"components/schemas/ClientUpdate","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}/clients/{client_id}","href":"clients/updateclient","openApiOperationId":"updateClient","summary":"Update a client","securityGroups":[{"OAuth2":["clients:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/ClientUpdate","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/requestBody/content/application~1merge-patch+json/example"],"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/ClientUpdate","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The updated client.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Client","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/200/content/application~1json/examples/client"]}},"schemaId":"components/schemas/Client","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/200/content/application~1json/examples/client"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Validation failed, the phone is taken ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"phone_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or merge-patch semantics were violated ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/422/content/application~1problem+json/examples/phone_taken"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/422/content/application~1problem+json/examples/phone_taken"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Client","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/200/content/application~1json/examples/client"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Client","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/200/content/application~1json/examples/client"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/422/content/application~1problem+json/examples/phone_taken"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/422/content/application~1problem+json/examples/phone_taken"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/clients/updateclient"}],"panels":[]}]},"httpPath":"/locations/{location_id}/clients/{client_id}"},{"label":"Delete a client","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/clients/deleteclient","routeSlug":"/en/b2b-v3/openapi/clients/deleteclient","metadata":{"seo":{"title":"Delete a client","description":"Deletes a client (soft delete). A client with the same phone can be created againafterwards. Requires If-Match with the version last seen."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"deleteClient","name":"Delete a client","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1clients~1{client_id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete a client","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Deletes a client (soft delete). A client with the same phone can be created again"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"afterwards. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the version last seen."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["clients:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"client_id","in":"path","schemaId":"schema_491","description":"Identifier of the client.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1clients~1{client_id}/delete/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1clients~1{client_id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/locations/{location_id}/clients/{client_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"client_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["clients:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["204","400","401","403","404","406","409","412","422","428","429","500","503"],"pointer":"/locations/{location_id}/clients/{client_id}","href":"clients/deleteclient","openApiOperationId":"deleteClient","summary":"Delete a client","securityGroups":[{"OAuth2":["clients:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204","description":"The client has been deleted.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"204"},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/412/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/clients/deleteclient"}],"panels":[]}]},"httpPath":"/locations/{location_id}/clients/{client_id}"}],"content":{"contentType":"group","meta":{"name":"Clients"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Clients","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The client base of a Location. Appointments can reference an existing client, resolve an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"inline client attach-only, or be clientless. Contact fields are PII and require the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" scope on top of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/locations/{location_id}/clients","summary":"List and search clients","prefix":{"name":"get","color":"get"},"badges":[],"link":"/clients/listclients","deprecated":false},{"title":"/locations/{location_id}/clients","summary":"Create a client","prefix":{"name":"post","color":"post"},"badges":[],"link":"/clients/createclient","deprecated":false},{"title":"/locations/{location_id}/clients/{client_id}","summary":"Get a client","prefix":{"name":"get","color":"get"},"badges":[],"link":"/clients/getclient","deprecated":false},{"title":"/locations/{location_id}/clients/{client_id}","summary":"Update a client","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/clients/updateclient","deprecated":false},{"title":"/locations/{location_id}/clients/{client_id}","summary":"Delete a client","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/clients/deleteclient","deprecated":false}]}]}]}]}},{"type":"separator","label":"Scheduling","content":null},{"type":"group","label":"Availability","link":"/en/b2b-v3/openapi/availability","routeSlug":"/en/b2b-v3/openapi/availability","items":[{"label":"Search availability slots","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/availability/getavailability","routeSlug":"/en/b2b-v3/openapi/availability/getavailability","metadata":{"seo":{"title":"Search availability slots","description":"Computes available start times for the given services within a date range —optionally narrowed to one Team Member. Slots are derived from configured schedules,existing appointments, and service durations; starts_at values carry the Location'slocal UTC offset and can be passed directly to createAppointment."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getAvailability","name":"Search availability slots","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1availability/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Search availability slots","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Computes available start times for the given services within a date range —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"optionally narrowed to one Team Member. Slots are derived from configured schedules,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"existing appointments, and service durations; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"starts_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" values carry the Location's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"local UTC offset and can be passed directly to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createAppointment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This is a computed read-only aggregate: slots have no ids and can disappear at any"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"moment when another request schedules an overlapping appointment (a lost race on create"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["availability:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1availability/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"service_ids","in":"query","schemaId":"schema_502","description":"Services the appointment will consist of.","required":true},{"name":"team_member_id","in":"query","schemaId":"schema_491","description":"Restrict the search to one Team Member."},{"name":"date_from","in":"query","schemaId":"schema_500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"First date of the range (inclusive), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"YYYY-MM-DD"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"date_to","in":"query","schemaId":"schema_500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Last date of the range (inclusive), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"YYYY-MM-DD"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1availability/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/availability","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"service_ids","in":"query","required":true,"schemaId":"schema_502","style":"form","explode":true},{"name":"team_member_id","in":"query","required":false,"schemaId":"schema_491"},{"name":"date_from","in":"query","required":true,"schemaId":"schema_500"},{"name":"date_to","in":"query","required":true,"schemaId":"schema_500"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["availability:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/availability","href":"availability/getavailability","openApiOperationId":"getAvailability","summary":"Search availability slots","securityGroups":[{"OAuth2":["availability:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Free slots for the requested services and range.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Availability","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/Availability","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1availability/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1availability/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1availability/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1availability/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1availability/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1availability/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1availability/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Availability","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Availability","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1availability/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1availability/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1availability/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1availability/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1availability/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1availability/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1availability/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/availability/getavailability"}],"panels":[]}]},"httpPath":"/locations/{location_id}/availability"}],"content":{"contentType":"group","meta":{"name":"Availability"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Availability","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Computed free appointment slots. Availability is derived from Team Member"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"schedules, existing appointments, and service durations — query it right before"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"creating an appointment to offer valid start times."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/locations/{location_id}/availability","summary":"Search availability slots","prefix":{"name":"get","color":"get"},"badges":[],"link":"/availability/getavailability","deprecated":false}]}]}]}]}},{"type":"group","label":"Resources","link":"/en/b2b-v3/openapi/resources","routeSlug":"/en/b2b-v3/openapi/resources","items":[{"label":"List resources","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/resources/listresources","routeSlug":"/en/b2b-v3/openapi/resources/listresources","metadata":{"seo":{"title":"List resources","description":"Returns the bookable resources of the Location (rooms, chairs, equipment) with theirinstances. Pass instance ids as resource_instance_ids when creating an appointmentfor services that require a resource. Resource management (create/update/delete) isnot part of the preview scope."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listResources","name":"List resources","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1resources/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List resources","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the bookable resources of the Location (rooms, chairs, equipment) with their"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"instances. Pass instance ids as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_instance_ids"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when creating an appointment"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for services that require a resource. Resource management (create/update/delete) is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not part of the preview scope."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cursor-paginated list. Default ordering: title, id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["locations:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1resources/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1resources/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/resources","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["locations:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/resources","href":"resources/listresources","openApiOperationId":"listResources","summary":"List resources","securityGroups":[{"OAuth2":["locations:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"A page of resources.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ResourceList","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/ResourceList","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1resources/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1resources/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1resources/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1resources/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1resources/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1resources/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1resources/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ResourceList","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ResourceList","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1resources/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1resources/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1resources/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1resources/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1resources/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1resources/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1resources/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/resources/listresources"}],"panels":[]}]},"httpPath":"/locations/{location_id}/resources"}],"content":{"contentType":"group","meta":{"name":"Resources"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Resources","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bookable resources of a Location (rooms, chairs, equipment) and their instances."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Locations that require resources for certain services pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_instance_ids"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when creating appointments. Read-only in the preview scope."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/locations/{location_id}/resources","summary":"List resources","prefix":{"name":"get","color":"get"},"badges":[],"link":"/resources/listresources","deprecated":false}]}]}]}]}},{"type":"group","label":"Appointments","link":"/en/b2b-v3/openapi/appointments","routeSlug":"/en/b2b-v3/openapi/appointments","items":[{"label":"Create an appointment","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/appointments/createappointment","routeSlug":"/en/b2b-v3/openapi/appointments/createappointment","metadata":{"seo":{"title":"Create an appointment","description":"Creates an appointment for a client with a Team Member at a chosen start time."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createAppointment","name":"Create an appointment","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1appointments/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create an appointment","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Creates an appointment for a client with a Team Member at a chosen start time."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A client is optional."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of an existing client, an inline "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" object resolved attach-only by normalized phone without "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or neither for a clientless appointment."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"With a client the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"201"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response carries "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit_id > 0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a clientless appointment has "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit_id: null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Payment and visit operations are keyed by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Slot conflicts are checked server-side: if a parallel request takes the slot first,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the call fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — pick a new slot from availability and retry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"new"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a retry of the same request returns the original"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"result instead of recording a duplicate appointment."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For a package service, pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"components[{package_component_id, team_member_id}]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from availability; the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"201"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response returns all created appointments plus their shared "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Inline client resolution does not reveal whether a client was found or created."},"children":[]}]}]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["appointments:create"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AppointmentCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withExistingClient","paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withInlineClient"]}},"schemaId":"components/schemas/AppointmentCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withExistingClient","paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withInlineClient"],"pointer":"/paths/~1locations~1{location_id}~1appointments/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations/{location_id}/appointments","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["appointments:create"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/AppointmentCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withExistingClient","paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withInlineClient"]}},"responseCodes":["201","400","401","403","404","406","409","415","422","429","500","503"],"pointer":"/locations/{location_id}/appointments","href":"appointments/createappointment","openApiOperationId":"createAppointment","summary":"Create an appointment","securityGroups":[{"OAuth2":["appointments:create"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/AppointmentCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withExistingClient","paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withInlineClient"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AppointmentCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withExistingClient","paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withInlineClient"]}},"examples":[{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"The created appointment.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_503","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/201/content/application~1json/examples/appointment","paths/~1locations~1{location_id}~1appointments/post/responses/201/content/application~1json/examples/package"]}},"schemaId":"schema_503","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/201/content/application~1json/examples/appointment","paths/~1locations~1{location_id}~1appointments/post/responses/201/content/application~1json/examples/package"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Location":{"$ref":"#/components/headers/Location"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_499"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The requested slot was taken by a parallel appointment creation ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" conflicts with an earlier request ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/409/content/application~1problem+json/examples/slot_taken"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/409/content/application~1problem+json/examples/slot_taken"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1appointments/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"schema_503","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/201/content/application~1json/examples/appointment","paths/~1locations~1{location_id}~1appointments/post/responses/201/content/application~1json/examples/package"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_503","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/201/content/application~1json/examples/appointment","paths/~1locations~1{location_id}~1appointments/post/responses/201/content/application~1json/examples/package"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/409/content/application~1problem+json/examples/slot_taken"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/409/content/application~1problem+json/examples/slot_taken"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/createappointment"}],"panels":[]}]},"httpPath":"/locations/{location_id}/appointments"},{"label":"List appointments","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/appointments/listappointments","routeSlug":"/en/b2b-v3/openapi/appointments/listappointments","metadata":{"seo":{"title":"List appointments","description":"Returns the appointments of the Location as a cursor-paginated list, newest windowfirst by start time with a stable tie-breaker. Client contact data insideexpand[]=client uses redacted contact fields without clients:read_contact."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listAppointments","name":"List appointments","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1appointments/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List appointments","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the appointments of the Location as a cursor-paginated list, newest window"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"first by start time with a stable tie-breaker. Client contact data inside"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expand[]=client"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses redacted contact fields without "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cancelled appointments are included; filter them out on the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field. There is no"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"status query parameter in the first iteration."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cursor-paginated list. Default ordering: starts_at desc, id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["appointments:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"starts_at_from","in":"query","schemaId":"schema_504","description":"Only appointments starting at or after this RFC 3339 datetime."},{"name":"starts_at_to","in":"query","schemaId":"schema_504","description":"Only appointments starting before this RFC 3339 datetime."},{"name":"team_member_id","in":"query","schemaId":"schema_491","description":"Only appointments of this Team Member."},{"name":"client_id","in":"query","schemaId":"schema_491","description":"Only appointments of this client."},{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"name":"expand[]","in":"query","schemaId":"schema_505","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Relations to embed, one level deep. Expanding "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" never bypasses PII rules — contact fields are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and listed in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redacted_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" without "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Unknown values fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1appointments/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/appointments","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"starts_at_from","in":"query","required":false,"schemaId":"schema_504"},{"name":"starts_at_to","in":"query","required":false,"schemaId":"schema_504"},{"name":"team_member_id","in":"query","required":false,"schemaId":"schema_491"},{"name":"client_id","in":"query","required":false,"schemaId":"schema_491"},{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"},{"name":"expand[]","in":"query","required":false,"schemaId":"schema_505","style":"form","explode":true}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["appointments:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/appointments","href":"appointments/listappointments","openApiOperationId":"listAppointments","summary":"List appointments","securityGroups":[{"OAuth2":["appointments:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"A page of appointments.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentList","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/AppointmentList","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1appointments/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AppointmentList","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentList","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/listappointments"}],"panels":[]}]},"httpPath":"/locations/{location_id}/appointments"},{"label":"Get an appointment","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/appointments/getappointment","routeSlug":"/en/b2b-v3/openapi/appointments/getappointment","metadata":{"seo":{"title":"Get an appointment","description":"Returns a single appointment. visit_id links to the billing visit (it is nullonly on appointments created without a client). Re-read the appointment to obtain afresh visit_id — visit grouping may change when the appointments of the day are edited. Theresponse carries an ETag header for a subsequent PATCH."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getAppointment","name":"Get an appointment","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get an appointment","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns a single appointment. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" links to the billing visit (it is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"only on appointments created without a client). Re-read the appointment to obtain a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"fresh "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — visit grouping may change when the appointments of the day are edited. The"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"response carries an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header for a subsequent "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["appointments:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"appointment_id","in":"path","schemaId":"schema_491","description":"Identifier of the appointment.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"expand[]","in":"query","schemaId":"schema_505","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Relations to embed, one level deep. Expanding "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" never bypasses PII rules — contact fields are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and listed in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redacted_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" without "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Unknown values fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/appointments/{appointment_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"appointment_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"expand[]","in":"query","required":false,"schemaId":"schema_505","style":"form","explode":true}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["appointments:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/appointments/{appointment_id}","href":"appointments/getappointment","openApiOperationId":"getAppointment","summary":"Get an appointment","securityGroups":[{"OAuth2":["appointments:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The appointment.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/200/content/application~1json/examples/appointment"]}},"schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/200/content/application~1json/examples/appointment"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/200/content/application~1json/examples/appointment"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/200/content/application~1json/examples/appointment"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/getappointment"}],"panels":[]}]},"httpPath":"/locations/{location_id}/appointments/{appointment_id}"},{"label":"Update (reschedule) an appointment","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/appointments/updateappointment","routeSlug":"/en/b2b-v3/openapi/appointments/updateappointment","metadata":{"seo":{"title":"Update (reschedule) an appointment","description":"Edits or reschedules an appointment with a merge-patch body: start time, Team Member,services, duration, comment. The appointment status is not editable here — use thestatus command. Cancellation is a separate cancel command."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateAppointment","name":"Update (reschedule) an appointment","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update (reschedule) an appointment","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Edits or reschedules an appointment with a merge-patch body: start time, Team Member,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"services, duration, comment. The appointment status is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" editable here — use the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" command. Cancellation is a separate "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cancel"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" command."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is required: appointments are the most contended resource (a human and an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"agent often edit the same one), and a stale version fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"instead of silently overwriting someone's change."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["appointments:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"appointment_id","in":"path","schemaId":"schema_491","description":"Identifier of the appointment.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value of the resource version the change is based on. A stale value fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a missing header fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"428 precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/AppointmentUpdate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"schemaId":"components/schemas/AppointmentUpdate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/requestBody/content/application~1merge-patch+json/example"],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/locations/{location_id}/appointments/{appointment_id}","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"appointment_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":true,"schemaId":"schema_492"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["appointments:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/merge-patch+json":{"schemaId":"components/schemas/AppointmentUpdate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}/appointments/{appointment_id}","href":"appointments/updateappointment","openApiOperationId":"updateAppointment","summary":"Update (reschedule) an appointment","securityGroups":[{"OAuth2":["appointments:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/AppointmentUpdate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/requestBody/content/application~1merge-patch+json/example"],"mediaTypes":["application/merge-patch+json"],"mediaTypeSchemas":{"application/merge-patch+json":{"schemaId":"components/schemas/AppointmentUpdate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/requestBody/content/application~1merge-patch+json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The updated appointment.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/200/content/application~1json/examples/appointment"]}},"schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/200/content/application~1json/examples/appointment"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_498"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/200/content/application~1json/examples/appointment"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/200/content/application~1json/examples/appointment"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/updateappointment"}],"panels":[]}]},"httpPath":"/locations/{location_id}/appointments/{appointment_id}"},{"label":"Cancel an appointment","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/appointments/cancelappointment","routeSlug":"/en/b2b-v3/openapi/appointments/cancelappointment","metadata":{"seo":{"title":"Cancel an appointment","description":"Cancels an appointment as a command: the response is the appointment withstatus: \"cancelled\" and cancelled_at set. Optionally stores a reason andwhether to notify the client."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"cancelAppointment","name":"Cancel an appointment","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Cancel an appointment","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cancels an appointment as a command: the response is the appointment with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status: \"cancelled\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cancelled_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" set. Optionally stores a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"reason"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"whether to notify the client."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cancelling an already cancelled appointment with the same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"key is a no-op returning the same result."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A cancelled appointment stays readable: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"getAppointment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returns it with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status: \"cancelled\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" rather than "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"listAppointments"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" keeps returning it, so a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"client synchronising the journal sees the cancellation instead of silently losing the row."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter on the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field to hide them. In a visit built from several appointments,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"cancelling one does not cancel the visit: the remaining appointments and any payments"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"already recorded stay, and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"amount_to_pay_minor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is recomputed when the visit is read."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["appointments:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"appointment_id","in":"path","schemaId":"schema_491","description":"Identifier of the appointment.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":false,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AppointmentCancelRequest","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/requestBody/content/application~1json/example"]}},"schemaId":"components/schemas/AppointmentCancelRequest","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/requestBody/content/application~1json/example"],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations/{location_id}/appointments/{appointment_id}/cancel","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"appointment_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["appointments:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/AppointmentCancelRequest","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/requestBody/content/application~1json/example"]}},"responseCodes":["200","400","401","403","404","406","409","415","422","429","500","503"],"pointer":"/locations/{location_id}/appointments/{appointment_id}/cancel","href":"appointments/cancelappointment","openApiOperationId":"cancelAppointment","summary":"Cancel an appointment","securityGroups":[{"OAuth2":["appointments:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/AppointmentCancelRequest","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/requestBody/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AppointmentCancelRequest","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/requestBody/content/application~1json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The cancelled appointment.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was already used with a different body ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the first request with this key is still running ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_495"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/cancelappointment"}],"panels":[]}]},"httpPath":"/locations/{location_id}/appointments/{appointment_id}/cancel"},{"label":"Set appointment status","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/appointments/setappointmentstatus","routeSlug":"/en/b2b-v3/openapi/appointments/setappointmentstatus","metadata":{"seo":{"title":"Set appointment status","description":"Moves an appointment through its status lifecycle: waiting → confirmed →arrived / no_show. Marking a past visit as arrived finalizes it when nothingis left to pay (a fully paid or free visit)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"setAppointmentStatus","name":"Set appointment status","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Set appointment status","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Moves an appointment through its status lifecycle: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"waiting"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" → "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"confirmed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" →"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"arrived"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"no_show"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Marking a past visit as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"arrived"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" finalizes it when nothing"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is left to pay (a fully paid or free visit)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Setting the status the appointment already has is a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no-op returning the current state."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The appointment identifies the visit; the submitted status is applied to the whole visit and all of its appointments. The response shows the resulting appointment status. An appointment created without a client has no visit ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), so the status applies to that appointment alone - there is nothing to widen to."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["appointments:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"appointment_id","in":"path","schemaId":"schema_491","description":"Identifier of the appointment.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AppointmentStatusRequest","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/requestBody/content/application~1json/example"]}},"schemaId":"components/schemas/AppointmentStatusRequest","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/requestBody/content/application~1json/example"],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations/{location_id}/appointments/{appointment_id}/status","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"appointment_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["appointments:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/AppointmentStatusRequest","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/requestBody/content/application~1json/example"]}},"responseCodes":["200","400","401","403","404","406","409","415","422","429","500","503"],"pointer":"/locations/{location_id}/appointments/{appointment_id}/status","href":"appointments/setappointmentstatus","openApiOperationId":"setAppointmentStatus","summary":"Set appointment status","securityGroups":[{"OAuth2":["appointments:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/AppointmentStatusRequest","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/requestBody/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AppointmentStatusRequest","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/requestBody/content/application~1json/example"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The appointment with the new status.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was already used with a different body ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the first request with this key is still running ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_495"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Appointment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/setappointmentstatus"}],"panels":[]}]},"httpPath":"/locations/{location_id}/appointments/{appointment_id}/status"}],"content":{"contentType":"group","meta":{"name":"Appointments"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Appointments","showPageActions":true},{"nodeType":"markdoc","content":"The appointment workflow: create, list, read, reschedule, cancel, and change appointment status. The appointment id is also the public key for visit/payment operations because appointments without a client can still be paid."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/locations/{location_id}/appointments","summary":"Create an appointment","prefix":{"name":"post","color":"post"},"badges":[],"link":"/appointments/createappointment","deprecated":false},{"title":"/locations/{location_id}/appointments","summary":"List appointments","prefix":{"name":"get","color":"get"},"badges":[],"link":"/appointments/listappointments","deprecated":false},{"title":"/locations/{location_id}/appointments/{appointment_id}","summary":"Get an appointment","prefix":{"name":"get","color":"get"},"badges":[],"link":"/appointments/getappointment","deprecated":false},{"title":"/locations/{location_id}/appointments/{appointment_id}","summary":"Update (reschedule) an appointment","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/appointments/updateappointment","deprecated":false},{"title":"/locations/{location_id}/appointments/{appointment_id}/cancel","summary":"Cancel an appointment","prefix":{"name":"post","color":"post"},"badges":[],"link":"/appointments/cancelappointment","deprecated":false},{"title":"/locations/{location_id}/appointments/{appointment_id}/status","summary":"Set appointment status","prefix":{"name":"post","color":"post"},"badges":[],"link":"/appointments/setappointmentstatus","deprecated":false}]}]}]}]}},{"type":"separator","label":"Visits & Payments","content":null},{"type":"group","label":"Visits","link":"/en/b2b-v3/openapi/visits","routeSlug":"/en/b2b-v3/openapi/visits","items":[{"label":"Get the visit for an appointment","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/visits/getvisit","routeSlug":"/en/b2b-v3/openapi/visits/getvisit","metadata":{"seo":{"title":"Get the visit for an appointment","description":"Returns the billing state resolved from appointment_id: service and products, payment methods applicable to this visit, payments from money and loyalty sources, and amount_to_pay_minor. visit_id remains a response field but is not a path key because appointments without a client may not have a visit id while still being payable. The first call may materialize the billing document; repeated calls resolve to the same document."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getVisit","name":"Get the visit for an appointment","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get the visit for an appointment","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the billing state resolved from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": service and products, payment methods applicable to this visit, payments from money and loyalty sources, and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"amount_to_pay_minor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" remains a response field but is not a path key because appointments without a client may not have a visit id while still being payable. The first call may materialize the billing document; repeated calls resolve to the same document."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["visits:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"appointment_id","in":"path","schemaId":"schema_491","description":"Identifier of the appointment.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"expand[]","in":"query","schemaId":"schema_506","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Relations to embed, one level deep. Expanding "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" never bypasses PII rules — contact fields are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and listed in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redacted_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" without "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Unknown values fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/appointments/{appointment_id}/visit","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"appointment_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"expand[]","in":"query","required":false,"schemaId":"schema_506","style":"form","explode":true}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["visits:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/appointments/{appointment_id}/visit","href":"visits/getvisit","openApiOperationId":"getVisit","summary":"Get the visit for an appointment","securityGroups":[{"OAuth2":["visits:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The visit.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Visit","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/200/content/application~1json/examples/visit"]}},"schemaId":"components/schemas/Visit","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/200/content/application~1json/examples/visit"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Visit","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/200/content/application~1json/examples/visit"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Visit","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/200/content/application~1json/examples/visit"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/visits/getvisit"}],"panels":[]}]},"httpPath":"/locations/{location_id}/appointments/{appointment_id}/visit"},{"label":"Add a product line to the appointment's visit","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/visits/addvisititem","routeSlug":"/en/b2b-v3/openapi/visits/addvisititem","metadata":{"seo":{"title":"Add a product line to the appointment's visit","description":"Adds one product line to the visit resolved from appointment_id — the \"came for a haircut,bought shampoo, one receipt\" case."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"addVisitItem","name":"Add a product line to the appointment's visit","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Add a product line to the appointment's visit","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Adds one product line to the visit resolved from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the \"came for a haircut,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bought shampoo, one receipt\" case."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Each call appends a single line and never replaces the existing ones, so a client that does not"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"know about lines added elsewhere cannot remove them. Service lines are derived from the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"appointment itself and cannot be created here. Adding a line increases "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"amount_to_pay_minor"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and changes the visit ETag. Inventory levels are not checked — the product catalog and inventory"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"are outside this contract. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a retry returns the visit as it stood"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"after the first call instead of adding the line twice."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["visits:write"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"appointment_id","in":"path","schemaId":"schema_491","description":"Identifier of the appointment.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/VisitItemCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/requestBody/content/application~1json/examples/product"]}},"schemaId":"components/schemas/VisitItemCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/requestBody/content/application~1json/examples/product"],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations/{location_id}/appointments/{appointment_id}/visit/items","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"appointment_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["visits:write"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/VisitItemCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/requestBody/content/application~1json/examples/product"]}},"responseCodes":["201","400","401","403","404","406","409","415","422","429","500","503"],"pointer":"/locations/{location_id}/appointments/{appointment_id}/visit/items","href":"visits/addvisititem","openApiOperationId":"addVisitItem","summary":"Add a product line to the appointment's visit","securityGroups":[{"OAuth2":["visits:write"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/VisitItemCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/requestBody/content/application~1json/examples/product"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/VisitItemCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/requestBody/content/application~1json/examples/product"]}},"examples":[{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"The updated visit, including the new line.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Visit","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/201/content/application~1json/examples/visit"]}},"schemaId":"components/schemas/Visit","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/201/content/application~1json/examples/visit"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The line cannot be added. Stable codes: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit_already_settled"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the visit is fully paid, so adding a line would leave a settled visit with an unpaid remainder), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}},"schemaId":"components/schemas/Problem","headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/Visit","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/201/content/application~1json/examples/visit"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Visit","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/201/content/application~1json/examples/visit"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/visits/addvisititem"}],"panels":[]}]},"httpPath":"/locations/{location_id}/appointments/{appointment_id}/visit/items"}],"content":{"contentType":"group","meta":{"name":"Visits"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Visits","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A visit groups appointment billing state: line items, applicable payment methods, payments from money and loyalty sources, and the remaining "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"amount_to_pay_minor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/locations/{location_id}/appointments/{appointment_id}/visit","summary":"Get the visit for an appointment","prefix":{"name":"get","color":"get"},"badges":[],"link":"/visits/getvisit","deprecated":false},{"title":"/locations/{location_id}/appointments/{appointment_id}/visit/items","summary":"Add a product line to the appointment's visit","prefix":{"name":"post","color":"post"},"badges":[],"link":"/visits/addvisititem","deprecated":false}]}]}]}]}},{"type":"group","label":"Payments","link":"/en/b2b-v3/openapi/payments","routeSlug":"/en/b2b-v3/openapi/payments","items":[{"label":"List payment methods","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/payments/listpaymentmethods","routeSlug":"/en/b2b-v3/openapi/payments/listpaymentmethods","metadata":{"seo":{"title":"List payment methods","description":"Returns the payment methods configured for the Location - what the business accepts and howeach method settles. This is the only source of payment_method_id for createPayment."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listPaymentMethods","name":"List payment methods","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1payment_methods/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List payment methods","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the payment methods configured for the Location - what the business accepts and how"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"each method settles. This is the only source of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment_method_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createPayment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"It does not say whether a method can pay a particular visit: read "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit.payment_methods"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for that, or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"searchLoyaltyInstrument"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for a gift card or membership held by number. Both"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"return "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ApplicablePaymentMethod"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", a different shape from this one."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cursor-paginated list. Default ordering: name, id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["payments:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1payment_methods/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1payment_methods/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/payment_methods","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["payments:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/payment_methods","href":"payments/listpaymentmethods","openApiOperationId":"listPaymentMethods","summary":"List payment methods","securityGroups":[{"OAuth2":["payments:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"A page of payment methods.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentMethodList","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/PaymentMethodList","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1payment_methods/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1payment_methods/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1payment_methods/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1payment_methods/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1payment_methods/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1payment_methods/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1payment_methods/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaymentMethodList","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentMethodList","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1payment_methods/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1payment_methods/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1payment_methods/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1payment_methods/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1payment_methods/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1payment_methods/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1payment_methods/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/payments/listpaymentmethods"}],"panels":[]}]},"httpPath":"/locations/{location_id}/payment_methods"},{"label":"List accounts","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/payments/listaccounts","routeSlug":"/en/b2b-v3/openapi/payments/listaccounts","metadata":{"seo":{"title":"List accounts","description":"Returns the cash/settlement accounts of the Location. Use an account's id asaccount_id in createPayment — either as the target of an account payment or asan override of a payment method's default account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listAccounts","name":"List accounts","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1accounts/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List accounts","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the cash/settlement accounts of the Location. Use an account's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"account_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createPayment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — either as the target of an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"account"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" payment or as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"an override of a payment method's default account."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cursor-paginated list. Default ordering: title, id tie-breaker. Cursors use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using field codes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expired_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foreign_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["finance:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1accounts/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"limit","in":"query","schemaId":"schema_493","description":"Page size for cursor pagination. Default is 25; maximum is 100."},{"name":"cursor","in":"query","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"pointer":"/paths/~1locations~1{location_id}~1accounts/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/accounts","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"limit","in":"query","required":false,"schemaId":"schema_493"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_492"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["finance:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","422","429","500","503"],"pointer":"/locations/{location_id}/accounts","href":"payments/listaccounts","openApiOperationId":"listAccounts","summary":"List accounts","securityGroups":[{"OAuth2":["finance:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"A page of accounts.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AccountList","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/AccountList","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1accounts/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1accounts/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1accounts/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1accounts/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1accounts/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1accounts/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1accounts/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AccountList","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AccountList","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1accounts/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1accounts/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1accounts/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1accounts/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1accounts/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1accounts/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/409/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1accounts/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/payments/listaccounts"}],"panels":[]}]},"httpPath":"/locations/{location_id}/accounts"},{"label":"Find a gift card or membership by number","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/payments/searchloyaltyinstrument","routeSlug":"/en/b2b-v3/openapi/payments/searchloyaltyinstrument","metadata":{"seo":{"title":"Find a gift card or membership by number","description":"Looks up a gift card or membership by its number and reports whether it can pay the visitresolved from appointment_id."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"searchLoyaltyInstrument","name":"Find a gift card or membership by number","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Find a gift card or membership by number","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Looks up a gift card or membership by its number and reports whether it can pay the visit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resolved from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This is for instruments the client does not hold in Altegio: a gift card received as a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"present, or a membership bought at another location of the chain. Instruments already"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"attached to the client come back from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"getVisit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment_methods"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and need no search."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Results carry the same applicability fields, so both are passed to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createPayment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same way."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Anti-enumeration:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" unknown, foreign-tenant, expired, and not-applicable numbers share one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"client-visible outcome — empty result or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 instrument_not_applicable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — and never distinct"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"codes that would reveal whether a number exists elsewhere. This search and number-bearing"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createPayment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" attempts share a per-credential, per-Location rate limit ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" +"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["loyalty:read"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"appointment_id","in":"path","schemaId":"schema_491","description":"Identifier of the appointment.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"number","in":"query","schemaId":"schema_492","description":"Loyalty instrument number to search."},{"name":"type","in":"query","schemaId":"schema_507","description":"Loyalty instrument type."}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/locations/{location_id}/appointments/{appointment_id}/payment_methods/search","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"appointment_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[{"name":"number","in":"query","required":false,"schemaId":"schema_492"},{"name":"type","in":"query","required":false,"schemaId":"schema_507"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["loyalty:read"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","412","415","422","428","429","500","503"],"pointer":"/locations/{location_id}/appointments/{appointment_id}/payment_methods/search","href":"payments/searchloyaltyinstrument","openApiOperationId":"searchLoyaltyInstrument","summary":"Find a gift card or membership by number","securityGroups":[{"OAuth2":["loyalty:read"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"OK","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ApplicablePaymentMethodList"}},"schemaId":"components/schemas/ApplicablePaymentMethodList","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Domain conflict ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"slot_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"duplicate_location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"last_location_owner"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), idempotency conflict, or generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"conflict"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when no more specific registered code applies."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/409/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/409/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"headerSchemaId":"schema_495"},{"code":"412","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" version is stale — the resource was changed by another writer ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"stale_version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Re-read the resource and retry deliberately."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/412/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/412/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"428","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header is missing ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"precondition_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/428/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/428/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ApplicablePaymentMethodList","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ApplicablePaymentMethodList"}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/409/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/409/content/application~1problem+json/example"]}}},{"code":"412","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/412/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/412/content/application~1problem+json/example"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/422/content/application~1problem+json/example"]}}},{"code":"428","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/428/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/428/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/payments/searchloyaltyinstrument"}],"panels":[]}]},"httpPath":"/locations/{location_id}/appointments/{appointment_id}/payment_methods/search"},{"label":"Record a payment on the appointment's visit","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/payments/createpayment","routeSlug":"/en/b2b-v3/openapi/payments/createpayment","metadata":{"seo":{"title":"Record a payment on the appointment's visit","description":"Records a money, deposit, loyalty, gift card, membership, or referral-program payment against the visit resolved from appointment_id. This records that payment was received (cash, card terminal, cashless, or a loyalty instrument) — Altegio does not move funds through a payment provider on this call. amount_minor must not exceed amount_to_pay_minor; for membership, amount_minor is 0 and coverage is reported through covers_items. Gift card and membership addressed by number use the same anti-enumeration policy as searchLoyaltyInstrument (422 instrument_not_applicable, shared rate limit). Requires Idempotency-Key; a retry returns the original payment instead of recording it twice. A free visit (amount_to_pay_minor is 0) needs no payment; finalize it through setAppointmentStatus."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createPayment","name":"Record a payment on the appointment's visit","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Record a payment on the appointment's visit","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Records a money, deposit, loyalty, gift card, membership, or referral-program payment against the visit resolved from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". This records that payment was received (cash, card terminal, cashless, or a loyalty instrument) — Altegio does not move funds through a payment provider on this call. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"amount_minor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" must not exceed "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"amount_to_pay_minor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"membership"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"amount_minor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and coverage is reported through "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"covers_items"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Gift card and membership addressed by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" use the same anti-enumeration policy as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"searchLoyaltyInstrument"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 instrument_not_applicable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", shared rate limit). Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; a retry returns the original payment instead of recording it twice. A free visit ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"amount_to_pay_minor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") needs no payment; finalize it through "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"setAppointmentStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["payments:capture"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"appointment_id","in":"path","schemaId":"schema_491","description":"Identifier of the appointment.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PaymentCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/cardViaMethod","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/directToAccount","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipByNumber","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipWithoutCode","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/depositPartial","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/referralProgram"]}},"schemaId":"components/schemas/PaymentCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/cardViaMethod","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/directToAccount","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipByNumber","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipWithoutCode","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/depositPartial","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/referralProgram"],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations/{location_id}/appointments/{appointment_id}/payments","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"appointment_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["payments:capture"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/PaymentCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/cardViaMethod","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/directToAccount","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipByNumber","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipWithoutCode","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/depositPartial","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/referralProgram"]}},"responseCodes":["201","400","401","403","404","406","409","415","422","429","500","503"],"pointer":"/locations/{location_id}/appointments/{appointment_id}/payments","href":"payments/createpayment","openApiOperationId":"createPayment","summary":"Record a payment on the appointment's visit","securityGroups":[{"OAuth2":["payments:capture"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"schemaId":"components/schemas/PaymentCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/cardViaMethod","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/directToAccount","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipByNumber","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipWithoutCode","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/depositPartial","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/referralProgram"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PaymentCreate","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/cardViaMethod","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/directToAccount","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipByNumber","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipWithoutCode","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/depositPartial","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/referralProgram"]}},"examples":[{},{},{},{},{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"The registered payment.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Payment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/201/content/application~1json/examples/payment"]}},"schemaId":"components/schemas/Payment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/201/content/application~1json/examples/payment"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"Location":{"$ref":"#/components/headers/Location"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_497"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was already used with a different body ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the first request with this key is still running ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_495"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Validation failed, amount exceeds unpaid remainder ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exceeds_unpaid"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or a number-addressed loyalty instrument is not usable ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"instrument_not_applicable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/422/content/application~1problem+json/examples/exceeds_unpaid","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/422/content/application~1problem+json/examples/instrument_not_applicable"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/422/content/application~1problem+json/examples/exceeds_unpaid","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/422/content/application~1problem+json/examples/instrument_not_applicable"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/Payment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/201/content/application~1json/examples/payment"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Payment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/201/content/application~1json/examples/payment"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/422/content/application~1problem+json/examples/exceeds_unpaid","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/422/content/application~1problem+json/examples/instrument_not_applicable"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/422/content/application~1problem+json/examples/exceeds_unpaid","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/422/content/application~1problem+json/examples/instrument_not_applicable"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/payments/createpayment"}],"panels":[]}]},"httpPath":"/locations/{location_id}/appointments/{appointment_id}/payments"},{"label":"Reverse a recorded payment","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/en/b2b-v3/openapi/payments/refundpayment","routeSlug":"/en/b2b-v3/openapi/payments/refundpayment","metadata":{"seo":{"title":"Reverse a recorded payment","description":"Locally reverses one payment action in full for the visit resolved from appointment_id.Partial reversal is not part of the contract. This is a local cancellation of posting inAltegio, not a payment-provider refund. Requires Idempotency-Key."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"refundPayment","name":"Reverse a recorded payment","isWebhook":false,"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Reverse a recorded payment","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Locally reverses one payment action in full for the visit resolved from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partial reversal is not part of the contract. This is a local cancellation of posting in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Altegio, not a payment-provider refund. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"No step-up confirmation is part of this preview contract. Refund authorization is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"explicit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" scope plus the subject's finance permission, with idempotency"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and audit on every call. A future human-confirmation flow will be added only with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"complete challenge contract."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"OAuth2","scopes":["payments:refund"],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}]},{"schemes":[{"name":"RestrictedKey","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"location_id","in":"path","schemaId":"schema_491","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true},{"name":"payment_id","in":"path","schemaId":"schema_492","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque payment id: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"t<number>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for money transactions, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"l<number>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for loyalty/deposit operations. Stable between requests."},"children":[]}]}]}],"required":true},{"name":"appointment_id","in":"path","schemaId":"schema_491","description":"Identifier of the appointment.","required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Idempotency-Key","in":"header","schemaId":"schema_496","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409 idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/locations/{location_id}/appointments/{appointment_id}/payments/{payment_id}/refund","servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"parameters":{"path":[{"name":"location_id","in":"path","required":true,"schemaId":"schema_491"},{"name":"payment_id","in":"path","required":true,"schemaId":"schema_492"},{"name":"appointment_id","in":"path","required":true,"schemaId":"schema_491"}],"query":[],"querystring":[],"header":[{"name":"Idempotency-Key","in":"header","required":true,"schemaId":"schema_496"}],"cookie":[]},"security":[{"schemes":[{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}}],"scopes":["payments:refund"]},{"schemes":[{"id":"RestrictedKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","403","404","406","409","415","422","429","500","503"],"pointer":"/locations/{location_id}/appointments/{appointment_id}/payments/{payment_id}/refund","href":"payments/refundpayment","openApiOperationId":"refundPayment","summary":"Reverse a recorded payment","securityGroups":[{"OAuth2":["payments:refund"]},{"RestrictedKey":[]}]},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/en/b2b-v3/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The payment after local reversal.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Payment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/200/content/application~1json/example"]}},"schemaId":"components/schemas/Payment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/200/content/application~1json/example"],"headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_494"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client error without a more specific registered code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bad_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — status default for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bare 400 and unknown 4xx), or protocol/syntax failure ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"malformed_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — broken JSON /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unparseable body only; must be thrown explicitly, never used as a synonym for every 400)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic field validation is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not 400."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/400/content/application~1problem+json/examples/malformed_request"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/400/content/application~1problem+json/examples/malformed_request"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request has no valid Bearer credential ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/401/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/401/content/application~1problem+json/example"],"headers":{"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string"},"example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_489"},{"code":"403","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token lacks the required scope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"missing_scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the scope is present but the token subject lacks the business permission ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"permission_denied"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/403/content/application~1problem+json/examples/permission_denied"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/403/content/application~1problem+json/examples/permission_denied"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"404","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource does not exist or is hidden by tenant policy. Prefer a resource-specific"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). Routing/gate/unknown-path 404s"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use the generic "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource_not_found"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape — do not distinguish “no pin” vs “missing”)."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"406","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Accept"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" media type cannot be satisfied ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"not_acceptable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/406/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/406/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was already used with a different body ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_key_reused"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the first request with this key is still running ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"idempotency_request_in_progress"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_495"},{"code":"415","description":"Unsupported request media type.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/415/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/415/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic validation failed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"validation_failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); field-level details are in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Merge-patch violations use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_not_nullable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/422/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/422/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"429","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit exceeded ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate_limit_exceeded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry after "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/429/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/429/content/application~1problem+json/example"],"headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_490"},{"code":"500","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unexpected server error ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/500/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/500/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"},{"code":"503","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A dependency required for safe processing (e.g. the idempotency store) is unavailable; the write was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" performed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"dependency_unavailable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Retry with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" after a backoff."},"children":[]}]}]}],"mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/503/content/application~1problem+json/example"]}},"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/503/content/application~1problem+json/example"],"headers":{"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"headerSchemaId":"schema_488"}],"pointer":"/paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Payment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Payment","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/200/content/application~1json/example"]}}},{"code":"400","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/400/content/application~1problem+json/examples/malformed_request"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/400/content/application~1problem+json/examples/bad_request","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/400/content/application~1problem+json/examples/malformed_request"]}}},{"code":"401","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/401/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/401/content/application~1problem+json/example"]}}},{"code":"403","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/403/content/application~1problem+json/examples/permission_denied"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/403/content/application~1problem+json/examples/missing_scope","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/403/content/application~1problem+json/examples/permission_denied"]}}},{"code":"404","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/404/content/application~1problem+json/examples/appointment_not_found"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/404/content/application~1problem+json/examples/resource_not_found","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/404/content/application~1problem+json/examples/appointment_not_found"]}}},{"code":"406","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/406/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/406/content/application~1problem+json/example"]}}},{"code":"409","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused","paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"]}}},{"code":"415","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/415/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/415/content/application~1problem+json/example"]}}},{"code":"422","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/422/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/422/content/application~1problem+json/example"]}}},{"code":"429","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/429/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/429/content/application~1problem+json/example"]}}},{"code":"500","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/500/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/500/content/application~1problem+json/example"]}}},{"code":"503","schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/503/content/application~1problem+json/example"],"mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem","exampleIds":["paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/503/content/application~1problem+json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/payments/refundpayment"}],"panels":[]}]},"httpPath":"/locations/{location_id}/appointments/{appointment_id}/payments/{payment_id}/refund"}],"content":{"contentType":"group","meta":{"name":"Payments"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Payments","showPageActions":true},{"nodeType":"markdoc","content":"Money and loyalty flow for an appointment's visit: discover payment methods and accounts, search loyalty instruments, record payments, and locally reverse a payment."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/locations/{location_id}/payment_methods","summary":"List payment methods","prefix":{"name":"get","color":"get"},"badges":[],"link":"/payments/listpaymentmethods","deprecated":false},{"title":"/locations/{location_id}/accounts","summary":"List accounts","prefix":{"name":"get","color":"get"},"badges":[],"link":"/payments/listaccounts","deprecated":false},{"title":"/locations/{location_id}/appointments/{appointment_id}/payment_methods/search","summary":"Find a gift card or membership by number","prefix":{"name":"get","color":"get"},"badges":[],"link":"/payments/searchloyaltyinstrument","deprecated":false},{"title":"/locations/{location_id}/appointments/{appointment_id}/payments","summary":"Record a payment on the appointment's visit","prefix":{"name":"post","color":"post"},"badges":[],"link":"/payments/createpayment","deprecated":false},{"title":"/locations/{location_id}/appointments/{appointment_id}/payments/{payment_id}/refund","summary":"Reverse a recorded payment","prefix":{"name":"post","color":"post"},"badges":[],"link":"/payments/refundpayment","deprecated":false}]}]}]}]}}],"store":{"schemaStore":{"components/schemas/Problem":{"id":"components/schemas/Problem","kind":"json-schema","title":"Problem","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Error body (RFC 9457 hybrid), always served as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/problem+json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Branch on the stable "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", never on human-readable text."},"children":[]}]}]}],"properties":{"type":{"type":"string","description":"Stable URL identifying the problem type; links to documentation."},"title":{"type":"string","description":"Human-readable summary of the problem type."},"status":{"type":"integer","description":"HTTP status code of this response."},"detail":{"type":"string","description":"Human-readable explanation of this occurrence."},"instance":{"type":"string","description":"Request identifier for support and log correlation."},"code":{"type":"string","description":"Stable machine-readable reason code."},"errors":{"type":"array","description":"Field-level issues (present on validation problems).","items":{"$ref":"#/components/schemas/ProblemFieldError"}}},"required":["type","title","status","code","instance"],"additionalProperties":false}},"components/schemas/ProblemFieldError":{"id":"components/schemas/ProblemFieldError","kind":"json-schema","title":"ProblemFieldError","data":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable reason for this field."},"pointer":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"JSON Pointer for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"body"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; parameter name for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"query"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"path"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"header"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"message":{"type":"string","description":"Human-readable explanation."},"source":{"type":"string","enum":["body","query","path","header"],"description":"Where the invalid value came from."}},"required":["code","source","pointer","message"],"additionalProperties":false}},"components/schemas/ListEnvelope":{"id":"components/schemas/ListEnvelope","kind":"json-schema","title":"ListEnvelope","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Common list envelope. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" holds the page items; pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" query parameter to fetch the next page while "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"has_more"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"properties":{"object":{"type":"string","enum":["list"]},"has_more":{"type":"boolean","description":"Whether more items exist beyond this page."},"next_cursor":{"type":["string","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor for the next page; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the last page."},"children":[]}]}]}]}},"required":["object","has_more","next_cursor"]}},"components/schemas/OAuthAuthorizationServerMetadata":{"id":"components/schemas/OAuthAuthorizationServerMetadata","kind":"json-schema","title":"OAuthAuthorizationServerMetadata","data":{"type":"object","description":"OAuth 2.0 authorization server metadata (RFC 8414).","properties":{"issuer":{"type":"string"},"authorization_endpoint":{"type":"string"},"token_endpoint":{"type":"string"},"revocation_endpoint":{"type":"string"},"registration_endpoint":{"type":"string"},"response_types_supported":{"type":"array","items":{"type":"string"}},"grant_types_supported":{"type":"array","items":{"type":"string"}},"code_challenge_methods_supported":{"type":"array","items":{"type":"string"}},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}}},"required":["issuer","authorization_endpoint","token_endpoint"],"additionalProperties":false}},"components/schemas/OAuthTokenRequest":{"id":"components/schemas/OAuthTokenRequest","kind":"json-schema","title":"OAuthTokenRequest","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token request (RFC 6749, form-encoded). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"resource"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" selects REST vs MCP token audience (RFC 8707)."},"children":[]}]}]}],"oneOf":[{"type":"object","properties":{"grant_type":{"type":"string","enum":["authorization_code"]},"code":{"type":"string"},"redirect_uri":{"type":"string"},"code_verifier":{"type":"string"},"client_id":{"type":"string"},"scope":{"type":"string"},"resource":{"type":"string","enum":["https://api.alteg.io","https://mcp.alteg.io"],"description":"RFC 8707 resource indicator selecting the REST API or MCP audience."}},"required":["grant_type","code","redirect_uri","code_verifier","client_id"],"additionalProperties":false},{"type":"object","properties":{"grant_type":{"type":"string","enum":["refresh_token"]},"refresh_token":{"type":"string"},"client_id":{"type":"string"},"scope":{"type":"string"},"resource":{"type":"string","enum":["https://api.alteg.io","https://mcp.alteg.io"],"description":"RFC 8707 resource indicator selecting the REST API or MCP audience."}},"required":["grant_type","refresh_token","client_id"],"additionalProperties":false},{"type":"object","properties":{"grant_type":{"type":"string","enum":["client_credentials"]},"location_id":{"type":"integer","description":"The Location this token acts in. The server resolves the installation from the\nauthenticated OAuth client plus this Location, so one token is always bound to\nexactly one Location.\n"},"scope":{"type":"string"},"resource":{"type":"string","enum":["https://api.alteg.io","https://mcp.alteg.io"],"description":"RFC 8707 resource indicator selecting the REST API or MCP audience."}},"required":["grant_type","location_id"],"additionalProperties":false}]}},"components/schemas/OAuthTokenResponse":{"id":"components/schemas/OAuthTokenResponse","kind":"json-schema","title":"OAuthTokenResponse","data":{"type":"object","properties":{"access_token":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque access token — never parse it."},"children":[]}]}]}]},"token_type":{"type":"string","enum":["Bearer"]},"expires_in":{"type":"integer","description":"Access token lifetime in seconds (about 900)."},"refresh_token":{"type":"string","description":"Rotating refresh token; only issued by the Authorization Code flow."},"scope":{"type":"string","description":"Space-separated scopes carried by the token."}},"required":["access_token","token_type","expires_in"],"additionalProperties":false}},"components/schemas/OAuthRevokeRequest":{"id":"components/schemas/OAuthRevokeRequest","kind":"json-schema","title":"OAuthRevokeRequest","data":{"type":"object","description":"Token revocation request (RFC 7009, form-encoded).","properties":{"token":{"type":"string","description":"The access or refresh token to revoke."},"token_type_hint":{"type":"string","enum":["access_token","refresh_token"]},"client_id":{"type":"string","description":"OAuth client identifier (public clients)."}},"required":["token"],"additionalProperties":false}},"components/schemas/OAuthClientRegistrationRequest":{"id":"components/schemas/OAuthClientRegistrationRequest","kind":"json-schema","title":"OAuthClientRegistrationRequest","data":{"type":"object","description":"Dynamic Client Registration request (RFC 7591).","properties":{"client_name":{"type":"string","description":"Human-readable OAuth client name shown on the consent screen."},"redirect_uris":{"type":"array","minItems":1,"items":{"type":"string","format":"uri"},"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Redirect URIs, compared "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exactly"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — no wildcards, no subdomain substitution."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Two forms are accepted:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Absolute HTTPS"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for web-hosted callbacks: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"https://app.example.com/oauth/callback"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Loopback for native and CLI clients"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (RFC 8252): "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"http://127.0.0.1/callback"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"http://[::1]/callback"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"port is dynamic"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — it is chosen at runtime and is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ignored when matching, so a client does not have to register every port it may bind."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"localhost"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" accepted as an equivalent of the loopback address: it resolves"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"through DNS and the hosts file, so it can be pointed elsewhere. Register the literal"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"IP instead. Any other plain-HTTP host is rejected."},"children":[]}]}]}],"maxItems":10},"grant_types":{"type":"array","items":{"type":"string","enum":["authorization_code","refresh_token"]},"default":["authorization_code"]},"token_endpoint_auth_method":{"type":"string","enum":["none"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"none"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" declares a public client (PKCE only, no secret)."},"children":[]}]}]}]},"scope":{"type":"string","description":"Space-separated scopes requested by the client metadata."},"client_uri":{"type":"string","format":"uri","description":"Public client home page URI."},"logo_uri":{"type":"string","format":"uri","description":"Public logo URI for consent UI."}},"required":["client_name","redirect_uris"],"additionalProperties":false}},"components/schemas/OAuthClientRegistrationResponse":{"id":"components/schemas/OAuthClientRegistrationResponse","kind":"json-schema","title":"OAuthClientRegistrationResponse","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Registered client metadata. Public clients receive no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_secret"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and must use Authorization Code + PKCE."},"children":[]}]}]}],"properties":{"client_id":{"type":"string"},"client_id_issued_at":{"type":"integer","description":"Unix timestamp of registration."},"client_name":{"type":"string"},"redirect_uris":{"type":"array","items":{"type":"string","format":"uri"}},"grant_types":{"type":"array","items":{"type":"string","enum":["authorization_code","refresh_token"]}},"token_endpoint_auth_method":{"type":"string","enum":["none"]}},"required":["client_id","client_id_issued_at","redirect_uris","grant_types","token_endpoint_auth_method"],"additionalProperties":false}},"components/schemas/OAuthError":{"id":"components/schemas/OAuthError","kind":"json-schema","title":"OAuthError","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 error object (RFC 6749 / RFC 7591) — used only by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/oauth/*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" endpoints."},"children":[]}]}]}],"properties":{"error":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth error code ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_grant"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_client"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", ...)."},"children":[]}]}]}]},"error_description":{"type":"string"}},"required":["error"],"additionalProperties":false}},"components/schemas/AccessibleResource":{"id":"components/schemas/AccessibleResource","kind":"json-schema","title":"AccessibleResource","data":{"type":"object","description":"One resource the current token is granted, with the scopes granted on it.","properties":{"object":{"type":"string","enum":["accessible_resource"],"readOnly":true},"type":{"type":"string","enum":["chain","location"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The grant level. Chain-level ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chain_*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") scopes only ever apply to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chain"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" entries; unprefixed scopes only to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" entries."},"children":[]}]}]}]},"id":{"type":"integer"},"parent_chain_id":{"type":["integer","null"],"description":"The location's main chain, when the resource is a location. A location may belong to more than one chain; this reports its main one and does not imply a grant on any chain."},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes granted on this resource. Always a subset of the token scopes."}},"required":["object","type","id","scopes"],"additionalProperties":false}},"components/schemas/AccessibleResourceList":{"id":"components/schemas/AccessibleResourceList","kind":"json-schema","title":"AccessibleResourceList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"],"readOnly":true},"data":{"type":"array","items":{"$ref":"#/components/schemas/AccessibleResource"}}},"required":["object","data"],"additionalProperties":false}},"components/schemas/Location":{"id":"components/schemas/Location","kind":"json-schema","title":"Location","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A business Location. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"timezone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"country_code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"currency"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are server-controlled and read-only; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"currency"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" applies to every money field of nested resources."},"children":[]}]}]}],"properties":{"id":{"type":"integer","readOnly":true},"object":{"type":"string","enum":["location"],"readOnly":true},"name":{"type":"string"},"description":{"type":["string","null"]},"business_type_id":{"type":["integer","null"],"description":"Business category of the Location."},"address":{"type":["string","null"]},"coordinates":{"type":["object","null"],"properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},"phones":{"type":"array","items":{"type":"string"},"description":"Business contact phone numbers in international format."},"site":{"type":["string","null"]},"timezone":{"type":"string","readOnly":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Canonical IANA timezone of the Location (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Europe/Lisbon"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},"currency":{"type":"string","readOnly":true,"description":"ISO 4217 currency of the Location. Server-controlled."},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."},"updated_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."},"city_id":{"type":"integer","description":"City dictionary id."},"language":{"type":"string","description":"BCP 47 language tag."},"datetime_format":{"type":"string"},"unique_visit_time_interval":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Visit grouping interval in seconds: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"-1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" groups all appointments of the day, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" keeps each appointment separate, positive values group by interval."},"children":[]}]}]}]},"country_code":{"type":"string","readOnly":true,"description":"ISO 3166-1 alpha-2 country code. Derived from city."}},"required":["id","object","name","timezone","country_code","currency","city_id","language","datetime_format","unique_visit_time_interval"]}},"components/schemas/LocationUpdate":{"id":"components/schemas/LocationUpdate","kind":"json-schema","title":"LocationUpdate","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Merge-patch body for a Location. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"timezone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"country_code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"currency"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are read-only. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"city_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" can only move within the same country."},"children":[]}]}]}],"properties":{"name":{"type":"string"},"description":{"type":["string","null"]},"business_type_id":{"type":["integer","null"]},"address":{"type":["string","null"]},"coordinates":{"type":["object","null"],"properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"additionalProperties":false},"phones":{"type":"array","items":{"type":"string"}},"site":{"type":["string","null"]},"city_id":{"type":"integer","description":"New city in the same country."},"language":{"type":"string","description":"BCP 47 language tag."},"datetime_format":{"type":"string"},"unique_visit_time_interval":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Visit grouping interval in seconds: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"-1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" groups all appointments of the day, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" keeps each appointment separate, positive values group by interval."},"children":[]}]}]}]}},"additionalProperties":false}},"components/schemas/Service":{"id":"components/schemas/Service","kind":"json-schema","title":"Service","data":{"type":"object","description":"A bookable service of the Location.","properties":{"id":{"type":"integer","readOnly":true},"object":{"type":"string","enum":["service"],"readOnly":true},"type":{"type":"string","enum":["simple","package"],"default":"simple","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Service kind. Immutable after creation ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). A package service bundles several simple services of the same Location; it appears in the same list and is scheduled by the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"service_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"package":{"$ref":"#/components/schemas/ServicePackageDetails","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Package settings and components. Present only when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"package"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"name":{"type":"string"},"category_id":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Service category ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"listServiceCategories"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},"duration_seconds":{"type":"integer","description":"Default duration in seconds."},"currency":{"type":"string","readOnly":true,"description":"ISO 4217, server-controlled by the Location."},"is_bookable":{"type":"boolean","readOnly":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Derived — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when the service has at least one bookable Team Member link."},"children":[]}]}]}]},"team_members":{"type":"array","items":{"$ref":"#/components/schemas/ServiceTeamMemberLink"},"description":"Team Members providing this service, with optional per-member overrides.","x-altegio-assumption":"Public field name follows the `team_member` glossary canon; alternatives will be resolved before contract freeze."},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."},"updated_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."},"price_minor":{"type":"integer","description":"Default price in integer minor units of the Location currency."}},"required":["id","object","type","name","category_id","duration_seconds","price_minor","currency"]}},"components/schemas/ServiceTeamMemberLink":{"id":"components/schemas/ServiceTeamMemberLink","kind":"json-schema","title":"ServiceTeamMemberLink","data":{"type":"object","properties":{"team_member_id":{"type":"integer"},"duration_seconds":{"type":["integer","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-member duration override in seconds. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses the service default."},"children":[]}]}]}]},"price_minor":{"type":["integer","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-member price override, integer minor units. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses the service default."},"children":[]}]}]}]},"technological_card_id":{"type":["integer","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-link technological card override; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses the service default."},"children":[]}]}]}]},"is_bookable":{"type":["boolean","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-link online scheduling flag override; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses the service default."},"children":[]}]}]}]},"online_booking_enabled":{"type":["boolean","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-link public scheduling availability override; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses the service default."},"children":[]}]}]}]}},"required":["team_member_id"],"additionalProperties":false}},"components/schemas/TeamMemberServiceLink":{"id":"components/schemas/TeamMemberServiceLink","kind":"json-schema","title":"TeamMemberServiceLink","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Service link seen from the Team Member side; carries the same per-link overrides as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ServiceTeamMemberLink"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"properties":{"service_id":{"type":"integer"},"duration_seconds":{"type":["integer","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-member duration override in seconds. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses the service default."},"children":[]}]}]}]},"price_minor":{"type":["integer","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-member price override, integer minor units. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses the service default."},"children":[]}]}]}]},"technological_card_id":{"type":["integer","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-link technological card override; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses the service default."},"children":[]}]}]}]},"is_bookable":{"type":["boolean","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-link online scheduling flag override; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses the service default."},"children":[]}]}]}]},"online_booking_enabled":{"type":["boolean","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-link public scheduling availability override; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses the service default."},"children":[]}]}]}]}},"required":["service_id"],"additionalProperties":false}},"components/schemas/ServiceCreate":{"id":"components/schemas/ServiceCreate","kind":"json-schema","title":"ServiceCreate","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request body for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createService"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Use the schema selector to switch between the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"simple"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"package"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" variants. In the right code panel, switch the example dropdown between "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"simple"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"package"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to view the corresponding curl payload."},"children":[]}]}]}],"oneOf":[{"$ref":"#/components/schemas/SimpleServiceCreate"},{"$ref":"#/components/schemas/PackageServiceCreate"}],"discriminator":{"propertyName":"type","mapping":{"simple":"#/components/schemas/SimpleServiceCreate","package":"#/components/schemas/PackageServiceCreate"}}}},"components/schemas/SimpleServiceCreate":{"id":"components/schemas/SimpleServiceCreate","kind":"json-schema","title":"SimpleServiceCreate","data":{"type":"object","description":"A regular bookable service.","properties":{"name":{"type":"string"},"category_id":{"type":"integer"},"type":{"type":"string","enum":["simple"],"example":"simple","description":"Service kind. Immutable after creation."},"duration_seconds":{"type":"integer"},"team_members":{"type":"array","items":{"$ref":"#/components/schemas/ServiceTeamMemberLink"}},"price_minor":{"type":"integer","description":"Integer minor units of the Location currency."}},"required":["name","category_id","type"],"additionalProperties":false}},"components/schemas/PackageServiceCreate":{"id":"components/schemas/PackageServiceCreate","kind":"json-schema","title":"PackageServiceCreate","data":{"type":"object","description":"A complex service package made of simple-service components.","properties":{"name":{"type":"string"},"category_id":{"type":"integer"},"type":{"type":"string","enum":["package"],"example":"package","description":"Service kind. Immutable after creation."},"duration_seconds":{"type":"integer"},"package":{"$ref":"#/components/schemas/ServicePackageDetails","description":"Required for package services; lists the simple-service components."},"team_members":{"type":"array","items":{"$ref":"#/components/schemas/ServiceTeamMemberLink"}},"price_minor":{"type":"integer","description":"Integer minor units of the Location currency."}},"required":["name","category_id","type","package"],"additionalProperties":false}},"components/schemas/ServiceUpdate":{"id":"components/schemas/ServiceUpdate","kind":"json-schema","title":"ServiceUpdate","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Merge-patch body for a service. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", when present, replaces the full link set ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" unlinks everyone). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is immutable ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 field_immutable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). For package services, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"package.components"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", when present, replaces the full component list."},"children":[]}]}]}],"properties":{"name":{"type":"string"},"category_id":{"type":"integer"},"duration_seconds":{"type":"integer"},"team_members":{"type":"array","items":{"$ref":"#/components/schemas/ServiceTeamMemberLink"}},"package":{"$ref":"#/components/schemas/ServicePackageDetails","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Only for package services; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"components"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" replaces the whole list."},"children":[]}]}]}]},"price_minor":{"type":"integer","description":"Integer minor units of the Location currency."}},"additionalProperties":false}},"components/schemas/ServicePackageDetails":{"id":"components/schemas/ServicePackageDetails","kind":"json-schema","title":"ServicePackageDetails","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Package-specific settings; present only on services with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type: package"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"x-altegio-assumption":"Package components may contain one component today and leave the package not_configured; minimum publishable component count must be confirmed before freeze.","properties":{"exec_order":{"type":"string","enum":["sequential","sequential_multi","parallel"],"default":"sequential","description":"Order in which component services are performed."},"pricing_type":{"type":"string","enum":["sum","manual","discount"],"default":"sum","description":"How the package price derives from its components."},"price_discount_percent":{"type":"number","default":0,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Discount applied to the component sum; used only when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pricing_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"discount"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", ignored otherwise."},"children":[]}]}]}]},"components":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/ServicePackageComponent"},"description":"Component services in execution order. On PATCH the array is replaced as a whole (merge-patch array semantics).","maxItems":10},"status":{"type":"string","enum":["not_configured","ready"],"readOnly":true,"description":"Read-only package configuration status."}},"required":["components"],"additionalProperties":false}},"components/schemas/ServicePackageComponent":{"id":"components/schemas/ServicePackageComponent","kind":"json-schema","title":"ServicePackageComponent","data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true,"description":"Stable package-component identifier used by availability and package appointment creation."},"service_id":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"simple"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" service of the same Location."},"children":[]}]}]}]},"position":{"type":"integer","description":"1-based order of the component."}},"required":["service_id"],"additionalProperties":false}},"components/schemas/ServiceCategory":{"id":"components/schemas/ServiceCategory","kind":"json-schema","title":"ServiceCategory","data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"object":{"type":"string","enum":["service_category"],"readOnly":true},"name":{"type":"string"},"weight":{"type":"integer","description":"Ordering weight (higher sorts first)."}},"required":["id","object","name"]}},"components/schemas/ServiceCategoryCreate":{"id":"components/schemas/ServiceCategoryCreate","kind":"json-schema","title":"ServiceCategoryCreate","data":{"type":"object","properties":{"name":{"type":"string"},"weight":{"type":"integer"}},"required":["name"],"additionalProperties":false}},"components/schemas/ServiceCategoryUpdate":{"id":"components/schemas/ServiceCategoryUpdate","kind":"json-schema","title":"ServiceCategoryUpdate","data":{"type":"object","description":"Merge-patch body for a service category.","properties":{"name":{"type":"string"},"weight":{"type":"integer"}},"additionalProperties":false}},"components/schemas/TeamMember":{"id":"components/schemas/TeamMember","kind":"json-schema","title":"TeamMember","data":{"type":"object","description":"A Team Member of the Location. Personal contact data of Team Members is not exposed in the preview scope.","properties":{"id":{"type":"integer","readOnly":true},"object":{"type":"string","enum":["team_member"],"readOnly":true},"name":{"type":"string"},"specialization":{"type":"string","description":"Public profession label shown to clients (for example in online booking)."},"position_id":{"type":["integer","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Position from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"listPositions"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"service_ids":{"type":"array","items":{"type":"integer"},"description":"Services this Team Member can be scheduled for."},"is_bookable":{"type":"boolean","readOnly":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Derived — whether the member can currently receive appointments."},"children":[]}]}]}]},"is_billable":{"type":"boolean","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Whether this Team Member occupies a paid seat in the Location's licence, which is what"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the Location is charged for. A non-billable member cannot hold schedule access, so"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_bookable"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is always "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for one. Locations still on the older licensing model"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"report "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" here and ignore the field on write — there the paid seat count follows"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"schedule access instead."},"children":[]}]}]}]},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."},"updated_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."}},"required":["id","object","name","specialization"]}},"components/schemas/TeamMemberCreate":{"id":"components/schemas/TeamMemberCreate","kind":"json-schema","title":"TeamMemberCreate","data":{"type":"object","properties":{"name":{"type":"string"},"specialization":{"type":"string","minLength":1,"description":"Public profession label shown to clients (for example in online booking)."},"position_id":{"type":"integer"},"services":{"type":"array","items":{"$ref":"#/components/schemas/TeamMemberServiceLink"},"description":"Initial service links, the same link shape as on update."},"access_invitation":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional - atomically invite this Team Member to a system-access role on creation (role"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"listLocationAccessRoles"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Requires an Authorization Code token with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in addition to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; Client Credentials"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and restricted keys cannot use this convenience in the first iteration."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"At least one of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"phone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is required: the invitation is delivered to that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"address, and without it "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sendTeamMemberInvitation"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" fails with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 invitation_contact_required"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". These are the invited person's login contacts, used"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for delivery only - they are write-only and are never returned by team member reads."},"children":[]}]}]}],"properties":{"role_id":{"type":"integer"},"phone":{"type":"string","writeOnly":true,"description":"International format. Delivery address for the invitation."},"email":{"type":"string","format":"email","writeOnly":true,"description":"Delivery address for the invitation."}},"required":["role_id"],"additionalProperties":false,"x-altegio-assumption":"Invitation delivery contact is modelled as write-only `phone`/`email` mapped onto the existing quick-create path (`user_phone`, `user_email`, `is_user_invite`). Whether the public contract should instead expose a separate team-member contact resource is open."},"is_billable":{"type":"boolean","default":false,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Whether the new Team Member takes a paid seat in the Location's licence. Defaults to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so a plain create never changes what the Location is charged: the member is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"created without schedule access and is not bookable. Send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to create a bookable"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"member and accept the licence charge — the create fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when the licence has"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no free paid seat. Locations on the older licensing model ignore this field."},"children":[]}]}]}]}},"required":["name","specialization"],"additionalProperties":false}},"components/schemas/TeamMemberUpdate":{"id":"components/schemas/TeamMemberUpdate","kind":"json-schema","title":"TeamMemberUpdate","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Merge-patch body for a Team Member. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"services"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", when present, replaces the full set of service links with the same override fields as on Service, keyed by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"service_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Missing "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"services"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" leaves links unchanged; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"services: []"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" unlinks all services; nullable override fields inside each link use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to fall back to the service default. Updating links moves the ETag on both the Team Member and affected Service resources."},"children":[]}]}]}],"properties":{"name":{"type":"string"},"specialization":{"type":"string","minLength":1,"description":"Public profession label shown to clients (for example in online booking)."},"position_id":{"type":["integer","null"]},"services":{"type":"array","items":{"$ref":"#/components/schemas/TeamMemberServiceLink"}},"is_billable":{"type":"boolean","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Moves the Team Member on or off a paid seat in the Location's licence, changing what the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Location is charged. Turning it on fails with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when the licence has no free paid"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"seat; turning it off also drops schedule access, because a non-billable member cannot be"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bookable. Locations on the older licensing model ignore this field."},"children":[]}]}]}]}},"additionalProperties":false}},"components/schemas/ScheduleSlot":{"id":"components/schemas/ScheduleSlot","kind":"json-schema","title":"ScheduleSlot","data":{"type":"object","properties":{"from":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Start of the working interval, wall-clock "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"HH:MM"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the Location timezone."},"children":[]}]}]}]},"to":{"type":"string","pattern":"^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"End of the working interval, wall-clock "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"HH:MM"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the Location timezone. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"24:00"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" denotes end of day, for shifts running until midnight."},"children":[]}]}]}]}},"required":["from","to"],"additionalProperties":false}},"components/schemas/ScheduleDay":{"id":"components/schemas/ScheduleDay","kind":"json-schema","title":"ScheduleDay","data":{"type":"object","properties":{"date":{"type":"string","format":"date"},"slots":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleSlot"},"description":"Working intervals of the day; empty means a day off."}},"required":["date","slots"]}},"components/schemas/ScheduleDayPatch":{"id":"components/schemas/ScheduleDayPatch","kind":"json-schema","title":"ScheduleDayPatch","data":{"type":"object","properties":{"slots":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleSlot"}}},"required":["slots"],"additionalProperties":false}},"components/schemas/TeamMemberSchedulePatch":{"id":"components/schemas/TeamMemberSchedulePatch","kind":"json-schema","title":"TeamMemberSchedulePatch","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Merge-patch map keyed by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"YYYY-MM-DD"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" date. A present date replaces that day's working slots; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears the day. Dates absent from the body are unchanged."},"children":[]}]}]}],"patternProperties":{"^[0-9]{4}-[0-9]{2}-[0-9]{2}$":{"oneOf":[{"$ref":"#/components/schemas/ScheduleDayPatch"},{"type":"null"}]}},"additionalProperties":false}},"components/schemas/Position":{"id":"components/schemas/Position","kind":"json-schema","title":"Position","data":{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"object":{"type":"string","enum":["position"],"readOnly":true},"title":{"type":"string"}},"required":["id","object","title"]}},"components/schemas/PositionCreate":{"id":"components/schemas/PositionCreate","kind":"json-schema","title":"PositionCreate","data":{"type":"object","properties":{"title":{"type":"string"}},"required":["title"],"additionalProperties":false}},"components/schemas/PositionUpdate":{"id":"components/schemas/PositionUpdate","kind":"json-schema","title":"PositionUpdate","data":{"type":"object","description":"Merge-patch body for a position.","properties":{"title":{"type":"string"}},"additionalProperties":false}},"components/schemas/Client":{"id":"components/schemas/Client","kind":"json-schema","title":"Client","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A client of the Location. Contact fields ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"phone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"additional_phone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are PII: without "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" plus the subject contact permission they are returned as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and their names are listed in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redacted_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" instead of exposing a contact string."},"children":[]}]}]}],"x-altegio-assumption":"Visit-statistics fields (visits_count, first/last visit, sold_amount_minor) are a preview draft; their final set will be confirmed before freeze.","properties":{"id":{"type":"integer","readOnly":true},"object":{"type":"string","enum":["client"],"readOnly":true},"name":{"type":"string"},"surname":{"type":["string","null"]},"patronymic":{"type":["string","null"]},"display_name":{"type":"string","readOnly":true},"phone":{"type":["string","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"International phone number. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when absent or withheld — see "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redacted_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"additional_phone":{"type":["string","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Additional phone number. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when absent or withheld — see "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redacted_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"email":{"type":["string","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Email address. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when absent or withheld — see "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"redacted_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"birth_date":{"type":["string","null"],"format":"date"},"comment":{"type":["string","null"],"description":"Private note about the client; requires comment access."},"discount":{"type":["number","null"],"description":"Personal discount, percent."},"visits_count":{"type":"integer","readOnly":true},"first_visit_at":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Location-local offset."},"last_visit_at":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Location-local offset."},"currency":{"type":"string","readOnly":true,"description":"ISO 4217, server-controlled by the Location."},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."},"updated_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."},"sold_amount_minor":{"type":"integer","readOnly":true,"description":"Lifetime paid total, integer minor units of the Location currency."},"redacted_fields":{"type":"array","readOnly":true,"items":{"type":"string"},"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Names of fields withheld by the PII policy for this object, for example"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[\"phone\", \"email\"]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A withheld contact is always returned as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — never as a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"masked or empty string, so an integration cannot write a mask back. An empty array"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"means nothing was withheld and a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value simply means no value is stored."},"children":[]}]}]}]}},"required":["id","object","name","phone"]}},"components/schemas/ClientCreate":{"id":"components/schemas/ClientCreate","kind":"json-schema","title":"ClientCreate","data":{"type":"object","properties":{"name":{"type":"string"},"phone":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"International format. Deduplicated within the Location ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 phone_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},"surname":{"type":"string"},"patronymic":{"type":"string"},"email":{"type":"string"},"additional_phone":{"type":"string"},"birth_date":{"type":"string","format":"date"},"comment":{"type":"string"},"discount":{"type":"number","description":"Personal discount, percent."}},"required":["name","phone"],"additionalProperties":false}},"components/schemas/ClientUpdate":{"id":"components/schemas/ClientUpdate","kind":"json-schema","title":"ClientUpdate","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Merge-patch body for a client. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears a nullable field."},"children":[]}]}]}],"properties":{"name":{"type":"string"},"phone":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 phone_taken"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when owned by another client."},"children":[]}]}]}]},"surname":{"type":["string","null"]},"patronymic":{"type":["string","null"]},"email":{"type":["string","null"]},"additional_phone":{"type":["string","null"]},"birth_date":{"type":["string","null"],"format":"date"},"comment":{"type":["string","null"]},"discount":{"type":["number","null"]}},"additionalProperties":false}},"components/schemas/AvailabilitySlot":{"id":"components/schemas/AvailabilitySlot","kind":"json-schema","title":"AvailabilitySlot","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A computed free appointment slot. Not addressable — slots have no id."},"children":[]}]}]}],"properties":{"object":{"type":"string","enum":["availability_slot"]},"team_member_id":{"type":"integer"},"starts_at":{"type":"string","format":"date-time","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"RFC 3339 with the Location's local UTC offset; pass directly to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createAppointment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"is_bookable":{"type":"boolean"},"duration_seconds":{"type":"integer","description":"Slot duration in seconds."},"resource_instance_ids":{"type":"array","items":{"type":"integer"},"description":"Resource instances occupied by the slot."},"components":{"type":"array","items":{"$ref":"#/components/schemas/AvailabilityPackageSegment"},"description":"For package services, per-component scheduling segments in execution order."}},"required":["object","team_member_id","starts_at","is_bookable"]}},"components/schemas/Resource":{"id":"components/schemas/Resource","kind":"json-schema","title":"Resource","data":{"type":"object","description":"A bookable resource of the Location with its instances.","properties":{"id":{"type":"integer","readOnly":true},"object":{"type":"string","enum":["resource"],"readOnly":true},"title":{"type":"string"},"instances":{"type":"array","items":{"$ref":"#/components/schemas/ResourceInstance"}}},"required":["id","object","title"]}},"components/schemas/ResourceInstance":{"id":"components/schemas/ResourceInstance","kind":"json-schema","title":"ResourceInstance","data":{"type":"object","properties":{"id":{"type":"integer"},"object":{"type":"string","enum":["resource_instance"]},"title":{"type":"string"}},"required":["id","object","title"]}},"components/schemas/AppointmentStatus":{"id":"components/schemas/AppointmentStatus","kind":"json-schema","title":"AppointmentStatus","data":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Status of an appointment. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"waiting"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — scheduled, not yet confirmed; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"confirmed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — confirmed by the client; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"arrived"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the client attended (terminal \"done\" state); "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"no_show"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the client did not attend; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cancelled"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — cancelled via the cancel command (never set through the status command)."},"children":[]}]}]}],"enum":["waiting","confirmed","arrived","no_show","cancelled"]}},"components/schemas/Appointment":{"id":"components/schemas/Appointment","kind":"json-schema","title":"Appointment","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A scheduled appointment. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" remains a response field and can be "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; payment and visit operations are keyed by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"properties":{"id":{"type":"integer","readOnly":true},"object":{"type":"string","enum":["appointment"],"readOnly":true},"location_id":{"type":"integer","readOnly":true},"client_id":{"type":["integer","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" only on appointments without a client."},"children":[]}]}]}]},"visit_id":{"type":["integer","null"],"readOnly":true,"description":"Billing visit of this appointment."},"team_member_id":{"type":"integer"},"service_ids":{"type":"array","items":{"type":"integer"}},"resource_instance_ids":{"type":"array","items":{"type":"integer"},"description":"Resource instances occupied by the appointment."},"status":{"$ref":"#/components/schemas/AppointmentStatus"},"starts_at":{"type":"string","format":"date-time","description":"RFC 3339 with the Location's local UTC offset."},"ends_at":{"type":"string","format":"date-time","readOnly":true,"description":"RFC 3339 with the Location's local UTC offset."},"duration_seconds":{"type":"integer"},"is_paid":{"type":"boolean","readOnly":true,"description":"Whether the visit of this appointment is fully paid."},"comment":{"type":["string","null"]},"cancelled_at":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"UTC; set by the cancel command."},"cancellation_reason":{"type":["string","null"],"readOnly":true},"client":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Present only when requested with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expand[]=client"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; PII rules apply."},"children":[]}]}]}],"readOnly":true,"$ref":"#/components/schemas/Client"},"team_member":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Present only when requested with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expand[]=team_member"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"readOnly":true,"$ref":"#/components/schemas/TeamMember"},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."},"updated_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."}},"required":["id","object","location_id","team_member_id","service_ids","status","starts_at","duration_seconds"]}},"components/schemas/AppointmentInlineClient":{"id":"components/schemas/AppointmentInlineClient","kind":"json-schema","title":"AppointmentInlineClient","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Inline client for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createAppointment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": attach-only resolver links an existing client by normalized phone without changing the client record, or creates a new client when none exists. It never restores a deleted client and the response does not reveal whether the client was found or created. No "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"clients:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" scope is required."},"children":[]}]}]}],"properties":{"name":{"type":"string"},"phone":{"type":"string","description":"International format."},"email":{"type":"string"}},"required":["name","phone"],"additionalProperties":false}},"components/schemas/AppointmentCreate":{"id":"components/schemas/AppointmentCreate","kind":"json-schema","title":"AppointmentCreate","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Create an appointment. A client is optional; pass an existing "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", inline "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" data for attach-only resolve-or-create by normalized phone, or neither for a clientless appointment. Package services pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"components[{package_component_id, team_member_id}]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" matching availability segments."},"children":[]}]}]}],"properties":{"client_id":{"type":"integer","description":"An existing client of the Location."},"client":{"$ref":"#/components/schemas/AppointmentInlineClient"},"team_member_id":{"type":"integer"},"service_ids":{"type":"array","minItems":1,"items":{"type":"integer"}},"resource_instance_ids":{"type":"array","items":{"type":"integer"},"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required by services that occupy a resource ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"listResources"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},"starts_at":{"type":"string","format":"date-time","description":"RFC 3339 with the Location's local UTC offset (take it from availability)."},"duration_seconds":{"type":"integer","description":"Optional override; defaults to the sum of service durations."},"comment":{"type":"string"},"components":{"type":"array","items":{"$ref":"#/components/schemas/AppointmentPackageComponentCreate"},"description":"For package services, selected Team Member per package component."}},"required":["team_member_id","service_ids","starts_at"],"additionalProperties":false}},"components/schemas/AppointmentUpdate":{"id":"components/schemas/AppointmentUpdate","kind":"json-schema","title":"AppointmentUpdate","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Merge-patch body for reschedule/edit. The appointment status is changed through the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" command; cancellation through the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cancel"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" command."},"children":[]}]}]}],"properties":{"starts_at":{"type":"string","format":"date-time","description":"RFC 3339 with the Location's local UTC offset."},"team_member_id":{"type":"integer"},"service_ids":{"type":"array","minItems":1,"items":{"type":"integer"}},"resource_instance_ids":{"type":"array","items":{"type":"integer"}},"duration_seconds":{"type":"integer"},"comment":{"type":["string","null"]}},"additionalProperties":false}},"components/schemas/AppointmentCancelRequest":{"id":"components/schemas/AppointmentCancelRequest","kind":"json-schema","title":"AppointmentCancelRequest","data":{"type":"object","properties":{"reason":{"type":"string","description":"Free-form cancellation reason stored on the appointment."},"notify_client":{"type":"boolean","description":"Whether to send the client a cancellation notification."}},"additionalProperties":false}},"components/schemas/AppointmentStatusRequest":{"id":"components/schemas/AppointmentStatusRequest","kind":"json-schema","title":"AppointmentStatusRequest","data":{"type":"object","properties":{"status":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Target status. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cancelled"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" cannot be set here — use the cancel command."},"children":[]}]}]}],"enum":["waiting","confirmed","arrived","no_show"]}},"required":["status"],"additionalProperties":false}},"components/schemas/PaymentMethod":{"id":"components/schemas/PaymentMethod","kind":"json-schema","title":"PaymentMethod","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A payment method configured for the Location - the cashier setup: what the business accepts"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and how it settles. Returned by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"listPaymentMethods"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and it is the only source of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment_method_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createPayment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This schema does not describe whether the method can be used for a particular visit. For"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"that, read "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit.payment_methods"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or search an instrument by number - both return"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ApplicablePaymentMethod"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"properties":{"id":{"type":"integer","readOnly":true},"object":{"type":"string","enum":["payment_method"],"readOnly":true},"slug":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Method kind (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cash"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"card"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cashless"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},"name":{"type":"string"},"default_account_id":{"type":["integer","null"],"description":"Account the method settles to unless overridden in the payment."},"fee_rate":{"type":["number","null"],"description":"Acquiring fee, percent.","x-altegio-assumption":"Fee percentage remains an open payment-method display question before freeze."},"card_brands":{"type":"array","items":{"$ref":"#/components/schemas/CardBrand"}},"installments":{"type":"array","items":{"type":"integer"},"description":"Available installment counts; empty when installments are not supported."}},"required":["id","object","slug","name"],"additionalProperties":false}},"components/schemas/ApplicablePaymentMethod":{"id":"components/schemas/ApplicablePaymentMethod","kind":"json-schema","title":"ApplicablePaymentMethod","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A way to pay "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"this"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" visit, with applicability resolved against it: a configured method of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the Location, a cash account, the client's deposit, or one of the client's loyalty"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"instruments. Returned inside "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit.payment_methods"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"searchLoyaltyInstrument"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Which identifier to send to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createPayment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" follows "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment_method"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment_method_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"account"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"account_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and the loyalty types use their own"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"instrument id together with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" where the instrument is addressed by number."},"children":[]}]}]}],"properties":{"id":{"type":"integer","readOnly":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the underlying method or instrument, in the space implied by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"object":{"type":"string","enum":["applicable_payment_method"],"readOnly":true},"type":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Which kind of payment this is, and therefore which identifier "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createPayment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" expects."},"children":[]}]}]}],"enum":["payment_method","account","deposit","loyalty_card","loyalty_program","gift_card","membership","referral_program"]},"name":{"type":"string"},"payment_method_id":{"type":["integer","null"],"readOnly":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Set when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment_method"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; pass it to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createPayment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"account_id":{"type":["integer","null"],"readOnly":true,"description":"Settlement account, when the type settles to one."},"number":{"type":["string","null"],"description":"Instrument number, for gift cards and memberships addressed by number."},"is_applicable":{"type":"boolean","readOnly":true,"description":"Whether this visit can be paid with it right now."},"applicable_amount_minor":{"type":["integer","null"],"readOnly":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"How much of this visit it can cover, in integer minor units. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for a membership, which covers sessions rather than money."},"children":[]}]}]}]},"is_partial_allowed":{"type":"boolean","readOnly":true,"description":"Whether it may cover part of the amount, leaving a remainder for another payment."}},"required":["id","object","type","name","is_applicable"],"additionalProperties":false}},"components/schemas/CardBrand":{"id":"components/schemas/CardBrand","kind":"json-schema","title":"CardBrand","data":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"}},"required":["id","title"]}},"components/schemas/Account":{"id":"components/schemas/Account","kind":"json-schema","title":"Account","data":{"type":"object","description":"A cash/settlement account of the Location.","properties":{"id":{"type":"integer","readOnly":true},"object":{"type":"string","enum":["account"],"readOnly":true},"title":{"type":"string"},"type_slug":{"type":"string","enum":["cash","cashless"]},"is_acquiring":{"type":"boolean","description":"Whether the account belongs to online acquiring."}},"required":["id","object","title","type_slug"]}},"components/schemas/VisitItem":{"id":"components/schemas/VisitItem","kind":"json-schema","title":"VisitItem","data":{"type":"object","description":"A line item of a visit.","properties":{"id":{"type":"integer"},"object":{"type":"string","enum":["visit_item"]},"type":{"type":"string","enum":["service","product"]},"service_id":{"type":["integer","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Set for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"service"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" items."},"children":[]}]}]}]},"product_id":{"type":["integer","null"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Set for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"product"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" items."},"children":[]}]}]}]},"title":{"type":"string"},"quantity":{"type":"integer"},"price_minor":{"type":"integer","description":"Unit price in integer minor units."},"amount_minor":{"type":"integer","description":"Line total in integer minor units."}},"required":["id","object","type","title","quantity","price_minor","amount_minor"],"additionalProperties":false}},"components/schemas/VisitItemCreate":{"id":"components/schemas/VisitItemCreate","kind":"json-schema","title":"VisitItemCreate","data":{"type":"object","description":"One product line to append to a visit. Service lines come from the appointment and cannot be created here.","properties":{"product_id":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Product identifier from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"listProducts"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"quantity":{"type":"integer","minimum":1,"default":1},"price_minor":{"type":"integer","description":"Unit price override in integer minor units. Omit to use the catalog price; overriding requires the discount permission and is rejected without it."}},"required":["product_id"],"additionalProperties":false}},"components/schemas/Refund":{"id":"components/schemas/Refund","kind":"json-schema","title":"Refund","data":{"type":"object","description":"A full local reversal of a payment action. This is not a payment-provider refund contract.","properties":{"id":{"type":"string","readOnly":true},"object":{"type":"string","enum":["refund"],"readOnly":true},"payment_id":{"type":"string","readOnly":true},"amount_minor":{"type":"integer","description":"Reversed amount in minor units."},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."}},"required":["id","object","payment_id","amount_minor"],"additionalProperties":false}},"components/schemas/Payment":{"id":"components/schemas/Payment","kind":"json-schema","title":"Payment","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque payment action registered against an appointment's visit. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is stable between requests: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"t<number>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for money payments and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"l<number>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for loyalty/deposit operations."},"children":[]}]}]}],"properties":{"id":{"type":"string","pattern":"^[tl][0-9]+$","readOnly":true},"object":{"type":"string","enum":["payment"],"readOnly":true},"visit_id":{"type":["integer","null"],"readOnly":true},"type":{"type":"string","enum":["payment_method","account","deposit","loyalty_card","loyalty_program","gift_card","membership","referral_program","membership_auto","prepaid_hold"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"membership_auto"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"prepaid_hold"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are read-only and never accepted by PaymentCreate."},"children":[]}]}]}]},"amount_minor":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Payment amount in minor units. For "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"membership"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", this is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; covered items are listed in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"covers_items"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"fee_minor":{"type":["integer","null"],"description":"Acquiring fee represented inside the payment; it is not exposed as a separate payment."},"currency":{"type":"string","readOnly":true,"description":"ISO 4217, server-controlled by the Location."},"account_id":{"type":["integer","null"]},"payment_method_id":{"type":["integer","null"]},"status":{"type":"string","enum":["completed","refunded"]},"covers_items":{"type":"array","items":{"$ref":"#/components/schemas/PaymentCoversItem"}},"card_brand_id":{"type":["integer","null"]},"installment_count":{"type":["integer","null"]},"refund":{"oneOf":[{"$ref":"#/components/schemas/Refund"},{"type":"null"}],"readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."}},"required":["id","object","type","amount_minor","currency","status","created_at"],"additionalProperties":false}},"components/schemas/PaymentCreate":{"id":"components/schemas/PaymentCreate","kind":"json-schema","title":"PaymentCreate","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Payment request. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" selects the variant and therefore which identifier is expected;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"every identifier comes from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit.payment_methods"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"searchLoyaltyInstrument"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"client never has to guess one."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Instruments that determine their own amount ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"membership"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"loyalty_program"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") take no"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"amount_minor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": a membership spends sessions and a loyalty program computes its own"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"discount. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"membership_auto"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"prepaid_hold"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are read-only types and are not accepted."},"children":[]}]}]}],"oneOf":[{"type":"object","title":"payment_method","description":"Cash, card terminal or cashless through a method configured for the Location.","properties":{"type":{"type":"string","enum":["payment_method"]},"payment_method_id":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"From "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"listPaymentMethods"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"amount_minor":{"type":"integer"},"account_id":{"type":"integer","description":"Account the payment settles to."},"card_brand_id":{"type":"integer"},"installment_count":{"type":"integer"}},"required":["type","payment_method_id","amount_minor","account_id"],"additionalProperties":false},{"type":"object","title":"account","description":"Straight to a cash or cashless account, without a configured method.","properties":{"type":{"type":"string","enum":["account"]},"account_id":{"type":"integer"},"amount_minor":{"type":"integer"}},"required":["type","account_id","amount_minor"],"additionalProperties":false},{"type":"object","title":"deposit","description":"From the client's deposit balance. A client may hold more than one deposit, so the deposit is named explicitly.","properties":{"type":{"type":"string","enum":["deposit"]},"deposit_id":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"From "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit.payment_methods"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"amount_minor":{"type":"integer"}},"required":["type","deposit_id","amount_minor"],"additionalProperties":false},{"type":"object","title":"loyalty_card","description":"From the balance of a loyalty card. Clients commonly hold cards in several chains, so the card is named explicitly.","properties":{"type":{"type":"string","enum":["loyalty_card"]},"loyalty_card_id":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"From "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit.payment_methods"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"amount_minor":{"type":"integer"}},"required":["type","loyalty_card_id","amount_minor"],"additionalProperties":false},{"type":"object","title":"loyalty_program","description":"Applies a loyalty program to the visit. The program computes the amount, so none is sent. Both the card and the program are named because one card can carry several programs.","properties":{"type":{"type":"string","enum":["loyalty_program"]},"loyalty_card_id":{"type":"integer"},"loyalty_program_id":{"type":"integer"}},"required":["type","loyalty_card_id","loyalty_program_id"],"additionalProperties":false},{"type":"object","title":"gift_card","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pays with a gift card. Identify it by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gift_card_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when the card carries no code."},"children":[]}]}]}],"properties":{"type":{"type":"string","enum":["gift_card"]},"number":{"type":"string"},"gift_card_id":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"From "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit.payment_methods"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"searchLoyaltyInstrument"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"amount_minor":{"type":"integer"}},"required":["type","amount_minor"],"anyOf":[{"required":["number"],"properties":{"number":{"type":"string"}}},{"required":["gift_card_id"],"properties":{"gift_card_id":{"type":"integer"}}}],"additionalProperties":false},{"type":"object","title":"membership","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Spends a membership session. No "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"amount_minor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - sessions are spent, not money. Identify it by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"membership_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when the membership carries no code (an empty code is allowed by membership settings)."},"children":[]}]}]}],"properties":{"type":{"type":"string","enum":["membership"]},"number":{"type":"string"},"membership_id":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"From "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit.payment_methods"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"searchLoyaltyInstrument"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"required":["type"],"anyOf":[{"required":["number"],"properties":{"number":{"type":"string"}}},{"required":["membership_id"],"properties":{"membership_id":{"type":"integer"}}}],"additionalProperties":false},{"type":"object","title":"referral_program","description":"Applies a referral program. A client may be eligible under several referral programs from different chains, so the program is named alongside the referrer.","properties":{"type":{"type":"string","enum":["referral_program"]},"referral_program_id":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"From "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"visit.payment_methods"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"referrer_phone":{"type":"string"},"amount_minor":{"type":"integer"}},"required":["type","referral_program_id","referrer_phone","amount_minor"],"additionalProperties":false}],"discriminator":{"propertyName":"type"}}},"components/schemas/Visit":{"id":"components/schemas/Visit","kind":"json-schema","title":"Visit","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Billing state resolved from an appointment: service and products, applicable payment methods, payments from money and loyalty sources, and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"amount_to_pay_minor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"properties":{"id":{"type":"integer","readOnly":true},"object":{"type":"string","enum":["visit"],"readOnly":true},"location_id":{"type":"integer","readOnly":true},"appointment_ids":{"type":"array","items":{"type":"integer"},"readOnly":true,"description":"Appointments grouped into this visit.","x-altegio-assumption":"Exposing the appointment ids of a visit is a preview convenience pending the visit slice implementation. Must be resolved before contract freeze."},"status":{"type":"string","enum":["waiting","confirmed","arrived","no_show"],"description":"Status of the visit."},"items":{"type":"array","items":{"$ref":"#/components/schemas/VisitItem"}},"payments":{"type":"array","items":{"$ref":"#/components/schemas/Payment"}},"currency":{"type":"string","readOnly":true,"description":"ISO 4217, server-controlled by the Location."},"client":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Present only when requested with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expand[]=client"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; PII rules apply."},"children":[]}]}]}],"readOnly":true,"$ref":"#/components/schemas/Client"},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."},"updated_at":{"type":"string","format":"date-time","readOnly":true,"description":"UTC."},"amount_to_pay_minor":{"type":"integer","readOnly":true,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Remaining unpaid amount in integer minor units. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" means fully paid or free."},"children":[]}]}]}]},"payment_methods":{"type":"array","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Ways to pay this visit, with applicability resolved against it and identifiers sufficient for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"createPayment"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Only instruments attached to the client appear here; a gift card or membership held by number is found with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"searchLoyaltyInstrument"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"items":{"$ref":"#/components/schemas/ApplicablePaymentMethod"}}},"required":["id","object","status","items","payment_methods","payments","amount_to_pay_minor","currency"]}},"components/schemas/ServiceList":{"id":"components/schemas/ServiceList","kind":"json-schema","title":"ServiceList","data":{"description":"Cursor-paginated list of services.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Service"}}},"required":["data"]}]}},"components/schemas/ServiceCategoryList":{"id":"components/schemas/ServiceCategoryList","kind":"json-schema","title":"ServiceCategoryList","data":{"description":"Cursor-paginated list of service categories.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ServiceCategory"}}},"required":["data"]}]}},"components/schemas/TeamMemberList":{"id":"components/schemas/TeamMemberList","kind":"json-schema","title":"TeamMemberList","data":{"description":"Cursor-paginated list of Team Members.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TeamMember"}}},"required":["data"]}]}},"components/schemas/TeamMemberSchedule":{"id":"components/schemas/TeamMemberSchedule","kind":"json-schema","title":"TeamMemberSchedule","data":{"description":"Working days of a Team Member within the requested range.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleDay"}}},"required":["data"]}]}},"components/schemas/PositionList":{"id":"components/schemas/PositionList","kind":"json-schema","title":"PositionList","data":{"description":"Cursor-paginated list of positions.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Position"}}},"required":["data"]}]}},"components/schemas/ClientList":{"id":"components/schemas/ClientList","kind":"json-schema","title":"ClientList","data":{"description":"Cursor-paginated list of clients.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Client"}}},"required":["data"]}]}},"components/schemas/Availability":{"id":"components/schemas/Availability","kind":"json-schema","title":"Availability","data":{"description":"Computed free slots for the requested services and range.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AvailabilitySlot"}}},"required":["data"]}]}},"components/schemas/ResourceList":{"id":"components/schemas/ResourceList","kind":"json-schema","title":"ResourceList","data":{"description":"Cursor-paginated list of resources.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Resource"}}},"required":["data"]}]}},"components/schemas/AppointmentList":{"id":"components/schemas/AppointmentList","kind":"json-schema","title":"AppointmentList","data":{"description":"Cursor-paginated list of appointments.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Appointment"}}},"required":["data"]}]}},"components/schemas/PaymentMethodList":{"id":"components/schemas/PaymentMethodList","kind":"json-schema","title":"PaymentMethodList","data":{"description":"Cursor-paginated list of payment methods.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PaymentMethod"}}},"required":["data"]}]}},"components/schemas/ApplicablePaymentMethodList":{"id":"components/schemas/ApplicablePaymentMethodList","kind":"json-schema","title":"ApplicablePaymentMethodList","data":{"description":"Cursor-paginated list of ways to pay a specific visit.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ApplicablePaymentMethod"}}},"required":["data"]}]}},"components/schemas/AccountList":{"id":"components/schemas/AccountList","kind":"json-schema","title":"AccountList","data":{"description":"Cursor-paginated list of accounts.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Account"}}},"required":["data"]}]}},"components/schemas/LocationCreate":{"id":"components/schemas/LocationCreate","kind":"json-schema","title":"LocationCreate","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Create a Location. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"country_code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"timezone"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"currency"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are derived from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"city_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and not writable."},"children":[]}]}]}],"properties":{"name":{"type":"string"},"city_id":{"type":"integer"},"business_type_id":{"type":"integer"},"language":{"type":"string","description":"BCP 47 language tag."},"datetime_format":{"type":"string"}},"required":["name","city_id","business_type_id","language","datetime_format"],"additionalProperties":false}},"components/schemas/LocationCreated":{"id":"components/schemas/LocationCreated","kind":"json-schema","title":"LocationCreated","data":{"description":"The created Location plus its provisioning status.","allOf":[{"$ref":"#/components/schemas/Location"},{"type":"object","properties":{"provisioning_status":{"type":"string","readOnly":true,"enum":["ready","pending"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ready"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" = base accounts and payment methods exist; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pending"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" = defaults are still being provisioned."},"children":[]}]}]}]}},"required":["provisioning_status"]}]}},"components/schemas/City":{"id":"components/schemas/City","kind":"json-schema","title":"City","data":{"type":"object","properties":{"id":{"type":"integer"},"object":{"type":"string","enum":["city"]},"country_id":{"type":"integer"},"name":{"type":"string"},"country_code":{"type":"string","readOnly":true}},"required":["id","object","country_id","name","country_code"],"additionalProperties":false}},"components/schemas/CityList":{"id":"components/schemas/CityList","kind":"json-schema","title":"CityList","data":{"description":"Cursor-paginated list of cities.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/City"}}},"required":["data"]}]}},"components/schemas/BusinessType":{"id":"components/schemas/BusinessType","kind":"json-schema","title":"BusinessType","data":{"type":"object","properties":{"id":{"type":"integer"},"object":{"type":"string","enum":["business_type"]},"title":{"type":"string"}},"required":["id","object","title"],"additionalProperties":false}},"components/schemas/BusinessTypeList":{"id":"components/schemas/BusinessTypeList","kind":"json-schema","title":"BusinessTypeList","data":{"description":"Cursor-paginated list of business types.","allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BusinessType"}}},"required":["data"]}]}},"components/schemas/LocationAccessRole":{"id":"components/schemas/LocationAccessRole","kind":"json-schema","title":"LocationAccessRole","data":{"type":"object","description":"Public access role. Internal permission slugs are not exposed.","properties":{"role_id":{"type":"integer"},"object":{"type":"string","enum":["location_access_role"]},"title":{"type":"string"}},"required":["role_id","object","title"],"additionalProperties":false}},"components/schemas/LocationAccessRoleList":{"id":"components/schemas/LocationAccessRoleList","kind":"json-schema","title":"LocationAccessRoleList","data":{"allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LocationAccessRole"}}},"required":["data"]}]}},"components/schemas/TeamMemberAccessInvitation":{"id":"components/schemas/TeamMemberAccessInvitation","kind":"json-schema","title":"TeamMemberAccessInvitation","data":{"type":"object","properties":{"sent_at":{"type":"string","format":"date-time","description":"UTC."},"expires_at":{"type":"string","format":"date-time","description":"UTC."}},"required":["sent_at","expires_at"],"additionalProperties":false}},"components/schemas/TeamMemberAccess":{"id":"components/schemas/TeamMemberAccess","kind":"json-schema","title":"TeamMemberAccess","data":{"type":"object","properties":{"object":{"type":"string","enum":["team_member_access"]},"team_member_id":{"type":"integer"},"status":{"type":"string","enum":["none","invited","active"]},"role_id":{"type":["integer","null"]},"invitation":{"oneOf":[{"$ref":"#/components/schemas/TeamMemberAccessInvitation"},{"type":"null"}]}},"required":["object","team_member_id","status","role_id"],"additionalProperties":false}},"components/schemas/TeamMemberInvitationCreate":{"id":"components/schemas/TeamMemberInvitationCreate","kind":"json-schema","title":"TeamMemberInvitationCreate","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Empty body for resend. Delivery contact cannot be overridden here — set write-only phone/email only on Team Member create ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"access_invitation"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"properties":{},"additionalProperties":false}},"components/schemas/TeamMemberAccessUpdate":{"id":"components/schemas/TeamMemberAccessUpdate","kind":"json-schema","title":"TeamMemberAccessUpdate","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Merge-patch body; only "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"role_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" can be changed."},"children":[]}]}]}],"properties":{"role_id":{"type":"integer"}},"required":["role_id"],"additionalProperties":false}},"components/schemas/Product":{"id":"components/schemas/Product","kind":"json-schema","title":"Product","data":{"type":"object","properties":{"id":{"type":"integer"},"object":{"type":"string","enum":["product"]},"title":{"type":"string"},"price_minor":{"type":"integer"},"unit":{"type":"string"}},"required":["id","object","title","price_minor","unit"],"additionalProperties":false}},"components/schemas/ProductList":{"id":"components/schemas/ProductList","kind":"json-schema","title":"ProductList","data":{"allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Product"}}},"required":["data"]}]}},"components/schemas/PaymentCoversItem":{"id":"components/schemas/PaymentCoversItem","kind":"json-schema","title":"PaymentCoversItem","data":{"type":"object","properties":{"visit_item_id":{"type":"integer"},"amount_minor":{"type":"integer"}},"required":["visit_item_id"],"additionalProperties":false}},"components/schemas/AvailabilityPackageSegment":{"id":"components/schemas/AvailabilityPackageSegment","kind":"json-schema","title":"AvailabilityPackageSegment","data":{"type":"object","properties":{"package_component_id":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Stable component id from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ServicePackageDetails.components[].id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"service_id":{"type":"integer"},"team_member_id":{"type":"integer"},"starts_at":{"type":"string","format":"date-time"},"duration_seconds":{"type":"integer"},"resource_instance_ids":{"type":"array","items":{"type":"integer"}}},"required":["package_component_id","service_id","team_member_id","starts_at","duration_seconds","resource_instance_ids"],"additionalProperties":false}},"components/schemas/AppointmentPackageComponentCreate":{"id":"components/schemas/AppointmentPackageComponentCreate","kind":"json-schema","title":"AppointmentPackageComponentCreate","data":{"type":"object","properties":{"package_component_id":{"type":"integer"},"team_member_id":{"type":"integer"}},"required":["package_component_id","team_member_id"],"additionalProperties":false}},"components/schemas/AppointmentCreateResponse":{"id":"components/schemas/AppointmentCreateResponse","kind":"json-schema","title":"AppointmentCreateResponse","data":{"type":"object","description":"Create-appointment result. Simple services return one appointment; package services return every created component appointment plus the shared visit id.","properties":{"object":{"type":"string","enum":["appointment_create_result"]},"visit_id":{"type":["integer","null"],"readOnly":true},"appointments":{"type":"array","items":{"$ref":"#/components/schemas/Appointment"}}},"required":["object","visit_id","appointments"],"additionalProperties":false}},"schema_485":{"kind":"json-schema","data":{"type":"object","properties":{"X-Request-Id":{"type":"string","description":"Request identifier for support and log correlation."},"Cache-Control":{"type":"string","description":"Public metadata may be cached briefly; clients should revalidate before long-lived use.","example":"public, max-age=3600"}}},"id":"schema_485"},"schema_486":{"kind":"json-schema","data":{"type":"object","properties":{"Retry-After":{"type":"integer","description":"Seconds to wait before retrying.","example":60}}},"id":"schema_486"},"schema_487":{"kind":"json-schema","data":{"type":"object","properties":{"X-Request-Id":{"type":"string","description":"Request identifier for support and log correlation."},"Cache-Control":{"type":"string","description":"Grants change independently of the token; do not cache beyond the token lifetime.","example":"no-store"}}},"id":"schema_487"},"schema_488":{"kind":"json-schema","data":{"type":"object","properties":{"X-Request-Id":{"type":"string","description":"Request identifier for support and log correlation."}}},"id":"schema_488"},"schema_489":{"kind":"json-schema","data":{"type":"object","properties":{"WWW-Authenticate":{"type":"string","description":"Bearer challenge.","example":"Bearer error=\"invalid_token\""},"X-Request-Id":{"type":"string","description":"Request identifier for support and log correlation."}}},"id":"schema_489"},"schema_490":{"kind":"json-schema","data":{"type":"object","properties":{"Retry-After":{"type":"integer","format":"int32","minimum":0,"description":"Seconds to wait before retrying."},"RateLimit-Remaining":{"type":"integer","format":"int32","minimum":0,"description":"Requests left in the most constrained policy window that applies to this request."},"RateLimit-Reset":{"type":"integer","format":"int32","minimum":0,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", seconds until the most constrained policy frees up; it equals "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" there."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On a successful response it reports the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"length"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of that policy's window rather than the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"time left in the current one, so treat it as the window size, not as a countdown — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"counter to pace against is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RateLimit-Remaining"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"RateLimit-Policy":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Most constrained policy applied to the request, as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"<limit>;w=<window in seconds>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":"10;w=60"},"X-Request-Id":{"type":"string","description":"Request identifier for support and log correlation."}}},"id":"schema_490"},"schema_491":{"kind":"json-schema","data":{"type":"integer"},"id":"schema_491"},"schema_492":{"kind":"json-schema","data":{"type":"string"},"id":"schema_492"},"schema_493":{"kind":"json-schema","data":{"type":"integer","minimum":1,"maximum":100,"default":25},"id":"schema_493"},"schema_494":{"kind":"json-schema","data":{"type":"object","properties":{"RateLimit-Remaining":{"type":"integer","format":"int32","minimum":0,"description":"Requests left in the most constrained policy window that applies to this request."},"RateLimit-Reset":{"type":"integer","format":"int32","minimum":0,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", seconds until the most constrained policy frees up; it equals "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" there."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On a successful response it reports the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"length"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of that policy's window rather than the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"time left in the current one, so treat it as the window size, not as a countdown — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"counter to pace against is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RateLimit-Remaining"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"RateLimit-Policy":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Most constrained policy applied to the request, as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"<limit>;w=<window in seconds>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":"10;w=60"},"X-Request-Id":{"type":"string","description":"Request identifier for support and log correlation."}}},"id":"schema_494"},"schema_495":{"kind":"json-schema","data":{"type":"object","properties":{"X-Request-Id":{"type":"string","description":"Request identifier for support and log correlation."},"Retry-After":{"type":"integer","format":"int32","minimum":0,"description":"Seconds to wait before retrying."}}},"id":"schema_495"},"schema_496":{"kind":"json-schema","data":{"type":"string","maxLength":255},"id":"schema_496"},"schema_497":{"kind":"json-schema","data":{"type":"object","properties":{"RateLimit-Remaining":{"type":"integer","format":"int32","minimum":0,"description":"Requests left in the most constrained policy window that applies to this request."},"RateLimit-Reset":{"type":"integer","format":"int32","minimum":0,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", seconds until the most constrained policy frees up; it equals "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" there."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On a successful response it reports the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"length"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of that policy's window rather than the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"time left in the current one, so treat it as the window size, not as a countdown — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"counter to pace against is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RateLimit-Remaining"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"RateLimit-Policy":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Most constrained policy applied to the request, as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"<limit>;w=<window in seconds>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":"10;w=60"},"Location":{"type":"string","description":"URL of the created resource."},"X-Request-Id":{"type":"string","description":"Request identifier for support and log correlation."}}},"id":"schema_497"},"schema_498":{"kind":"json-schema","data":{"type":"object","properties":{"RateLimit-Remaining":{"type":"integer","format":"int32","minimum":0,"description":"Requests left in the most constrained policy window that applies to this request."},"RateLimit-Reset":{"type":"integer","format":"int32","minimum":0,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", seconds until the most constrained policy frees up; it equals "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" there."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On a successful response it reports the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"length"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of that policy's window rather than the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"time left in the current one, so treat it as the window size, not as a countdown — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"counter to pace against is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RateLimit-Remaining"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"RateLimit-Policy":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Most constrained policy applied to the request, as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"<limit>;w=<window in seconds>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":"10;w=60"},"ETag":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Version tag of the returned resource. Send it back in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the next "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DELETE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"X-Request-Id":{"type":"string","description":"Request identifier for support and log correlation."}}},"id":"schema_498"},"schema_499":{"kind":"json-schema","data":{"type":"object","properties":{"RateLimit-Remaining":{"type":"integer","format":"int32","minimum":0,"description":"Requests left in the most constrained policy window that applies to this request."},"RateLimit-Reset":{"type":"integer","format":"int32","minimum":0,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", seconds until the most constrained policy frees up; it equals "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" there."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On a successful response it reports the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"length"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of that policy's window rather than the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"time left in the current one, so treat it as the window size, not as a countdown — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"counter to pace against is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RateLimit-Remaining"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"RateLimit-Policy":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Most constrained policy applied to the request, as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"<limit>;w=<window in seconds>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":"10;w=60"},"Location":{"type":"string","description":"URL of the created resource."},"ETag":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Version tag of the returned resource. Send it back in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the next "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DELETE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"X-Request-Id":{"type":"string","description":"Request identifier for support and log correlation."}}},"id":"schema_499"},"schema_500":{"kind":"json-schema","data":{"type":"string","format":"date"},"id":"schema_500"},"schema_501":{"kind":"json-schema","data":{"type":"string","format":"email"},"id":"schema_501"},"schema_502":{"kind":"json-schema","data":{"type":"array","minItems":1,"items":{"type":"integer"}},"id":"schema_502"},"schema_503":{"kind":"json-schema","data":{"oneOf":[{"$ref":"#/components/schemas/Appointment"},{"$ref":"#/components/schemas/AppointmentCreateResponse"}]},"id":"schema_503"},"schema_504":{"kind":"json-schema","data":{"type":"string","format":"date-time"},"id":"schema_504"},"schema_505":{"kind":"json-schema","data":{"type":"array","items":{"type":"string","enum":["client","team_member"]}},"id":"schema_505"},"schema_506":{"kind":"json-schema","data":{"type":"array","items":{"type":"string","enum":["client"]}},"id":"schema_506"},"schema_507":{"kind":"json-schema","data":{"type":"string","enum":["gift_card","membership"]},"id":"schema_507"}},"exampleStore":{"components/examples/LocationExample":{"id":"components/examples/LocationExample","value":{"id":4321,"object":"location","name":"Demo Beauty Studio Lisbon","description":null,"business_type_id":1,"address":"Av. da Liberdade 100, Lisbon","coordinates":{"latitude":38.7223,"longitude":-9.1393},"phones":["+351210000000"],"site":"https://demo.example.com","timezone":"Europe/Lisbon","currency":"EUR","created_at":"2025-01-15T10:00:00Z","updated_at":"2026-07-01T08:00:00Z","city_id":6201,"language":"en-PT","datetime_format":"DD.MM.YYYY HH:mm","unique_visit_time_interval":0,"country_code":"PT"},"summary":"A Location"},"components/examples/ServiceExample":{"id":"components/examples/ServiceExample","value":{"id":100,"object":"service","type":"simple","name":"Men's haircut","category_id":205,"duration_seconds":3600,"currency":"EUR","is_bookable":true,"team_members":[{"team_member_id":321},{"team_member_id":322,"duration_seconds":2700,"price_minor":300000}],"created_at":"2026-07-01T08:00:00Z","updated_at":"2026-07-10T09:30:00Z","price_minor":250000},"summary":"A service"},"components/examples/ServicePackageExample":{"id":"components/examples/ServicePackageExample","value":{"id":200,"object":"service","type":"package","package":{"exec_order":"sequential","pricing_type":"sum","price_discount_percent":10,"components":[{"service_id":1501,"position":1},{"service_id":1502,"position":2}]},"name":"Spa day","category_id":205,"duration_seconds":7200,"currency":"EUR","is_bookable":true,"team_members":[{"team_member_id":321}],"created_at":"2026-07-01T08:00:00Z","updated_at":"2026-07-10T09:30:00Z","price_minor":500000},"summary":"A service package"},"components/examples/TeamMemberExample":{"id":"components/examples/TeamMemberExample","value":{"id":321,"object":"team_member","name":"Aigerim Bekova","specialization":"Hairdresser","position_id":15,"service_ids":[100],"is_bookable":true,"created_at":"2026-06-01T08:00:00Z","updated_at":"2026-07-01T08:00:00Z"},"summary":"A Team Member"},"components/examples/ClientExample":{"id":"components/examples/ClientExample","value":{"id":789,"object":"client","name":"Demo","surname":"Client","patronymic":null,"display_name":"Demo Client","phone":"+351210000175","additional_phone":null,"email":"demo.client@example.com","birth_date":"1990-04-12","comment":null,"discount":5,"visits_count":12,"first_visit_at":"2025-11-02T10:00:00+00:00","last_visit_at":"2026-07-09T11:30:00+01:00","currency":"EUR","created_at":"2025-11-02T09:57:15Z","updated_at":"2026-07-09T09:57:15Z","sold_amount_minor":1250000},"summary":"A client (contact fields visible)"},"components/examples/AppointmentExample":{"id":"components/examples/AppointmentExample","value":{"id":12345,"object":"appointment","location_id":4321,"client_id":789,"visit_id":5001,"team_member_id":321,"service_ids":[100],"resource_instance_ids":[],"status":"waiting","starts_at":"2026-07-24T11:30:00+01:00","ends_at":"2026-07-24T12:30:00+01:00","duration_seconds":3600,"is_paid":false,"comment":null,"cancelled_at":null,"cancellation_reason":null,"created_at":"2026-07-20T09:57:15Z","updated_at":"2026-07-20T09:57:15Z"},"summary":"An appointment"},"components/examples/VisitExample":{"id":"components/examples/VisitExample","value":{"id":5001,"object":"visit","location_id":4321,"appointment_ids":[12345],"status":"arrived","items":[{"id":8101,"object":"visit_item","type":"service","service_id":100,"title":"Men's haircut","quantity":1,"price_minor":250000,"amount_minor":250000}],"payments":[{"id":"t9001","object":"payment","visit_id":5001,"type":"payment_method","payment_method_id":71,"account_id":13,"amount_minor":250000,"fee_minor":2500,"currency":"EUR","card_brand_id":1,"installment_count":null,"status":"completed","covers_items":[],"refund":null,"created_at":"2026-07-24T13:00:00Z"}],"currency":"EUR","created_at":"2026-07-24T11:30:00Z","updated_at":"2026-07-24T13:00:00Z","amount_to_pay_minor":0,"payment_methods":[{"id":71,"object":"applicable_payment_method","type":"payment_method","name":"Bank card","payment_method_id":71,"account_id":13,"number":null,"is_applicable":true,"applicable_amount_minor":250000,"is_partial_allowed":true}]},"summary":"A visit with one paid service"},"components/examples/PaymentExample":{"id":"components/examples/PaymentExample","value":{"id":"t9001","object":"payment","visit_id":5001,"type":"payment_method","payment_method_id":71,"account_id":13,"amount_minor":250000,"fee_minor":2500,"currency":"EUR","card_brand_id":1,"installment_count":null,"status":"completed","covers_items":[],"refund":null,"created_at":"2026-07-24T13:00:00Z"},"summary":"A registered payment"},"paths/~1.well-known~1oauth-authorization-server/get/responses/200/content/application~1json/example":{"value":{"issuer":"https://api.alteg.io","authorization_endpoint":"https://api.alteg.io/oauth/authorize","token_endpoint":"https://api.alteg.io/oauth/token","revocation_endpoint":"https://api.alteg.io/oauth/revoke","registration_endpoint":"https://api.alteg.io/oauth/register","response_types_supported":["code"],"grant_types_supported":["authorization_code","client_credentials","refresh_token"],"code_challenge_methods_supported":["S256"],"token_endpoint_auth_methods_supported":["client_secret_basic","none"],"scopes_supported":["locations:read","locations:write","locations:create","services:read","services:write","products:read","team_members:read","team_members:write","team_members:manage_access","clients:read","clients:read_contact","clients:write","availability:read","appointments:read","appointments:create","appointments:write","visits:read","visits:write","payments:read","payments:capture","payments:refund","finance:read","loyalty:read","chain_services:read","chain_services:write","chain_clients:read","chain_loyalty:read"]},"id":"paths/~1.well-known~1oauth-authorization-server/get/responses/200/content/application~1json/example"},"paths/~1.well-known~1oauth-authorization-server/get/responses/429/content/application~1json/example":{"value":{"error":"temporarily_unavailable","error_description":"Metadata request rate limit exceeded. Retry later."},"id":"paths/~1.well-known~1oauth-authorization-server/get/responses/429/content/application~1json/example"},"paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/clientCredentials":{"value":{"grant_type":"client_credentials","location_id":90211,"scope":"appointments:read appointments:create clients:read"},"key":"clientCredentials","summary":"Marketplace M2M token for one Location","id":"paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/clientCredentials"},"paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/authorizationCode":{"value":{"grant_type":"authorization_code","code":"SplxlOBeZQQYbYS6WxSbIA","redirect_uri":"https://partner.example.com/oauth/callback","client_id":"altg_oauth_2f6d","code_verifier":"dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"},"key":"authorizationCode","summary":"Exchange an authorization code (PKCE)","id":"paths/~1oauth~1token/post/requestBody/content/application~1x-www-form-urlencoded/examples/authorizationCode"},"paths/~1oauth~1token/post/responses/200/content/application~1json/example":{"value":{"access_token":"altg_at_7f3a1c9e0b2d4f68a1c9e0b2","token_type":"Bearer","expires_in":900,"refresh_token":"altg_rt_5b8e2d4f68a1c9e0b2d4f68a","scope":"appointments:read appointments:create clients:read"},"id":"paths/~1oauth~1token/post/responses/200/content/application~1json/example"},"paths/~1oauth~1token/post/responses/400/content/application~1json/example":{"value":{"error":"invalid_grant","error_description":"Authorization code is expired or already used."},"id":"paths/~1oauth~1token/post/responses/400/content/application~1json/example"},"paths/~1oauth~1token/post/responses/401/content/application~1json/example":{"value":{"error":"invalid_client","error_description":"Unknown client or invalid client credentials."},"id":"paths/~1oauth~1token/post/responses/401/content/application~1json/example"},"paths/~1oauth~1token/post/responses/429/content/application~1json/example":{"value":{"error":"temporarily_unavailable","error_description":"Token request rate limit exceeded. Retry later."},"id":"paths/~1oauth~1token/post/responses/429/content/application~1json/example"},"paths/~1oauth~1token/post/responses/500/content/application~1json/example":{"value":{"error":"server_error","error_description":"Token could not be issued. Retry later."},"id":"paths/~1oauth~1token/post/responses/500/content/application~1json/example"},"paths/~1oauth~1token/post/responses/503/content/application~1json/example":{"value":{"error":"temporarily_unavailable","error_description":"Authorization server dependency is unavailable. Retry later."},"id":"paths/~1oauth~1token/post/responses/503/content/application~1json/example"},"paths/~1oauth~1revoke/post/requestBody/content/application~1x-www-form-urlencoded/example":{"value":{"token":"altg_rt_5b8e2d4f68a1c9e0b2d4f68a","token_type_hint":"refresh_token"},"id":"paths/~1oauth~1revoke/post/requestBody/content/application~1x-www-form-urlencoded/example"},"paths/~1oauth~1revoke/post/responses/401/content/application~1json/example":{"value":{"error":"invalid_client","error_description":"Unknown client or invalid client credentials."},"id":"paths/~1oauth~1revoke/post/responses/401/content/application~1json/example"},"paths/~1oauth~1revoke/post/responses/429/content/application~1json/example":{"value":{"error":"temporarily_unavailable","error_description":"Revocation rate limit exceeded. Retry later."},"id":"paths/~1oauth~1revoke/post/responses/429/content/application~1json/example"},"paths/~1oauth~1revoke/post/responses/500/content/application~1json/example":{"value":{"error":"server_error","error_description":"Revocation could not be completed. Retry later."},"id":"paths/~1oauth~1revoke/post/responses/500/content/application~1json/example"},"paths/~1oauth~1revoke/post/responses/503/content/application~1json/example":{"value":{"error":"temporarily_unavailable","error_description":"Revocation dependency is unavailable. Retry later."},"id":"paths/~1oauth~1revoke/post/responses/503/content/application~1json/example"},"paths/~1oauth~1register/post/requestBody/content/application~1json/example":{"value":{"client_name":"Example MCP Host","redirect_uris":["https://mcp-host.example.com/oauth/callback","http://127.0.0.1/callback"],"grant_types":["authorization_code","refresh_token"],"token_endpoint_auth_method":"none"},"id":"paths/~1oauth~1register/post/requestBody/content/application~1json/example"},"paths/~1oauth~1register/post/responses/201/content/application~1json/example":{"value":{"client_id":"altg_oauth_9c41","client_id_issued_at":1784900000,"client_name":"Example MCP Host","redirect_uris":["https://mcp-host.example.com/oauth/callback","http://127.0.0.1/callback"],"grant_types":["authorization_code","refresh_token"],"token_endpoint_auth_method":"none"},"id":"paths/~1oauth~1register/post/responses/201/content/application~1json/example"},"paths/~1oauth~1register/post/responses/400/content/application~1json/example":{"value":{"error":"invalid_redirect_uri","error_description":"redirect_uris must be absolute HTTPS URLs or RFC 8252 loopback addresses."},"id":"paths/~1oauth~1register/post/responses/400/content/application~1json/example"},"paths/~1oauth~1register/post/responses/429/content/application~1json/example":{"value":{"error":"temporarily_unavailable","error_description":"Registration rate limit exceeded. Retry later."},"id":"paths/~1oauth~1register/post/responses/429/content/application~1json/example"},"paths/~1oauth~1register/post/responses/503/content/application~1json/example":{"value":{"error":"temporarily_unavailable","error_description":"Dynamic client registration is disabled."},"id":"paths/~1oauth~1register/post/responses/503/content/application~1json/example"},"paths/~1oauth~1accessible-resources/get/responses/200/content/application~1json/examples/oneChainTwoLocations":{"value":{"object":"list","data":[{"object":"accessible_resource","type":"chain","id":42,"parent_chain_id":null,"scopes":["chain_services:read"]},{"object":"accessible_resource","type":"location","id":10,"parent_chain_id":42,"scopes":["appointments:read","appointments:create","visits:read"]},{"object":"accessible_resource","type":"location","id":11,"parent_chain_id":42,"scopes":["appointments:read"]}]},"key":"oneChainTwoLocations","summary":"A chain grant plus two location grants","id":"paths/~1oauth~1accessible-resources/get/responses/200/content/application~1json/examples/oneChainTwoLocations"},"paths/~1oauth~1accessible-resources/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1oauth~1accessible-resources/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1oauth~1accessible-resources/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1oauth~1accessible-resources/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1oauth~1accessible-resources/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1oauth~1accessible-resources/get/responses/401/content/application~1problem+json/example"},"paths/~1oauth~1accessible-resources/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1oauth~1accessible-resources/get/responses/406/content/application~1problem+json/example"},"paths/~1oauth~1accessible-resources/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1oauth~1accessible-resources/get/responses/429/content/application~1problem+json/example"},"paths/~1oauth~1accessible-resources/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1oauth~1accessible-resources/get/responses/500/content/application~1problem+json/example"},"paths/~1oauth~1accessible-resources/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1oauth~1accessible-resources/get/responses/503/content/application~1problem+json/example"},"paths/~1reference~1cities/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1reference~1cities/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1reference~1cities/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1reference~1cities/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1reference~1cities/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1reference~1cities/get/responses/401/content/application~1problem+json/example"},"paths/~1reference~1cities/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1reference~1cities/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1reference~1cities/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1reference~1cities/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1reference~1cities/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1reference~1cities/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1reference~1cities/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1reference~1cities/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1reference~1cities/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1reference~1cities/get/responses/406/content/application~1problem+json/example"},"paths/~1reference~1cities/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1reference~1cities/get/responses/409/content/application~1problem+json/example"},"paths/~1reference~1cities/get/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1reference~1cities/get/responses/412/content/application~1problem+json/example"},"paths/~1reference~1cities/get/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1reference~1cities/get/responses/415/content/application~1problem+json/example"},"paths/~1reference~1cities/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1reference~1cities/get/responses/422/content/application~1problem+json/example"},"paths/~1reference~1cities/get/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1reference~1cities/get/responses/428/content/application~1problem+json/example"},"paths/~1reference~1cities/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1reference~1cities/get/responses/429/content/application~1problem+json/example"},"paths/~1reference~1cities/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1reference~1cities/get/responses/500/content/application~1problem+json/example"},"paths/~1reference~1cities/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1reference~1cities/get/responses/503/content/application~1problem+json/example"},"paths/~1reference~1business_types/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1reference~1business_types/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1reference~1business_types/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1reference~1business_types/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1reference~1business_types/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1reference~1business_types/get/responses/401/content/application~1problem+json/example"},"paths/~1reference~1business_types/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1reference~1business_types/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1reference~1business_types/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1reference~1business_types/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1reference~1business_types/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1reference~1business_types/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1reference~1business_types/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1reference~1business_types/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1reference~1business_types/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1reference~1business_types/get/responses/406/content/application~1problem+json/example"},"paths/~1reference~1business_types/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1reference~1business_types/get/responses/409/content/application~1problem+json/example"},"paths/~1reference~1business_types/get/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1reference~1business_types/get/responses/412/content/application~1problem+json/example"},"paths/~1reference~1business_types/get/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1reference~1business_types/get/responses/415/content/application~1problem+json/example"},"paths/~1reference~1business_types/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1reference~1business_types/get/responses/422/content/application~1problem+json/example"},"paths/~1reference~1business_types/get/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1reference~1business_types/get/responses/428/content/application~1problem+json/example"},"paths/~1reference~1business_types/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1reference~1business_types/get/responses/429/content/application~1problem+json/example"},"paths/~1reference~1business_types/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1reference~1business_types/get/responses/500/content/application~1problem+json/example"},"paths/~1reference~1business_types/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1reference~1business_types/get/responses/503/content/application~1problem+json/example"},"paths/~1locations/post/requestBody/content/application~1json/example":{"value":{"name":"Lisbon Center","city_id":6201,"business_type_id":1,"language":"en-PT","datetime_format":"DD.MM.YYYY HH:mm"},"id":"paths/~1locations/post/requestBody/content/application~1json/example"},"paths/~1locations/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations/post/responses/401/content/application~1problem+json/example"},"paths/~1locations/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations/post/responses/406/content/application~1problem+json/example"},"paths/~1locations/post/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations/post/responses/409/content/application~1problem+json/example"},"paths/~1locations/post/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations/post/responses/412/content/application~1problem+json/example"},"paths/~1locations/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations/post/responses/415/content/application~1problem+json/example"},"paths/~1locations/post/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations/post/responses/422/content/application~1problem+json/example"},"paths/~1locations/post/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations/post/responses/428/content/application~1problem+json/example"},"paths/~1locations/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations/post/responses/429/content/application~1problem+json/example"},"paths/~1locations/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations/post/responses/500/content/application~1problem+json/example"},"paths/~1locations/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations/post/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/get/responses/200/content/application~1json/examples/location":{"value":{"id":4321,"object":"location","name":"Demo Beauty Studio Lisbon","description":null,"business_type_id":1,"address":"Av. da Liberdade 100, Lisbon","coordinates":{"latitude":38.7223,"longitude":-9.1393},"phones":["+351210000000"],"site":"https://demo.example.com","timezone":"Europe/Lisbon","currency":"EUR","created_at":"2025-01-15T10:00:00Z","updated_at":"2026-07-01T08:00:00Z","city_id":6201,"language":"en-PT","datetime_format":"DD.MM.YYYY HH:mm","unique_visit_time_interval":0,"country_code":"PT"},"key":"location","summary":"A Location","id":"paths/~1locations~1{location_id}/get/responses/200/content/application~1json/examples/location"},"paths/~1locations~1{location_id}/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/patch/requestBody/content/application~1merge-patch+json/example":{"value":{"name":"Lisbon Center","phones":["+351210000000"]},"id":"paths/~1locations~1{location_id}/patch/requestBody/content/application~1merge-patch+json/example"},"paths/~1locations~1{location_id}/patch/responses/200/content/application~1json/examples/location":{"value":{"id":4321,"object":"location","name":"Demo Beauty Studio Lisbon","description":null,"business_type_id":1,"address":"Av. da Liberdade 100, Lisbon","coordinates":{"latitude":38.7223,"longitude":-9.1393},"phones":["+351210000000"],"site":"https://demo.example.com","timezone":"Europe/Lisbon","currency":"EUR","created_at":"2025-01-15T10:00:00Z","updated_at":"2026-07-01T08:00:00Z","city_id":6201,"language":"en-PT","datetime_format":"DD.MM.YYYY HH:mm","unique_visit_time_interval":0,"country_code":"PT"},"key":"location","summary":"A Location","id":"paths/~1locations~1{location_id}/patch/responses/200/content/application~1json/examples/location"},"paths/~1locations~1{location_id}/patch/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}/patch/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}/patch/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}/patch/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}/patch/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}/patch/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/patch/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}/patch/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/patch/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}/patch/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/patch/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}/patch/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/patch/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}/patch/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/patch/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}/patch/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/patch/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}/patch/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/patch/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}/patch/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}/patch/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}/patch/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/get/responses/200/content/application~1json/example":{"value":{"object":"list","data":[{"id":100,"object":"service","type":"simple","name":"Men's haircut","category_id":205,"duration_seconds":3600,"currency":"EUR","is_bookable":true,"team_members":[{"team_member_id":321},{"team_member_id":322,"duration_seconds":2700,"price_minor":300000}],"created_at":"2026-07-01T08:00:00Z","updated_at":"2026-07-10T09:30:00Z","price_minor":250000},{"id":200,"object":"service","type":"package","package":{"exec_order":"sequential","pricing_type":"sum","price_discount_percent":10,"components":[{"service_id":1501,"position":1},{"service_id":1502,"position":2}]},"name":"Spa day","category_id":205,"duration_seconds":7200,"currency":"EUR","is_bookable":true,"team_members":[{"team_member_id":321}],"created_at":"2026-07-01T08:00:00Z","updated_at":"2026-07-10T09:30:00Z","price_minor":500000}],"has_more":false,"next_cursor":null},"id":"paths/~1locations~1{location_id}~1services/get/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1services/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1services/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1services/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1services/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1services/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1services/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1services/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1services/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1services/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1services/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1services/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1services/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1services/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1services/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1services/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1services/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1services/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1services/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1services/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1services/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/simple":{"value":{"name":"Men's haircut","category_id":205,"type":"simple","duration_seconds":3600,"team_members":[{"team_member_id":321},{"team_member_id":322,"duration_seconds":2700,"price_minor":300000}],"price_minor":250000},"key":"simple","summary":"simple","id":"paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/simple"},"paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/package":{"value":{"name":"Spa day","category_id":205,"type":"package","duration_seconds":7200,"package":{"exec_order":"sequential","pricing_type":"sum","price_discount_percent":10,"components":[{"service_id":1501,"position":1},{"service_id":1502,"position":2}]},"price_minor":500000},"key":"package","summary":"package","id":"paths/~1locations~1{location_id}~1services/post/requestBody/content/application~1json/examples/package"},"paths/~1locations~1{location_id}~1services/post/responses/201/content/application~1json/examples/service":{"value":{"id":100,"object":"service","type":"simple","name":"Men's haircut","category_id":205,"duration_seconds":3600,"currency":"EUR","is_bookable":true,"team_members":[{"team_member_id":321},{"team_member_id":322,"duration_seconds":2700,"price_minor":300000}],"created_at":"2026-07-01T08:00:00Z","updated_at":"2026-07-10T09:30:00Z","price_minor":250000},"key":"service","summary":"A service","id":"paths/~1locations~1{location_id}~1services/post/responses/201/content/application~1json/examples/service"},"paths/~1locations~1{location_id}~1services/post/responses/201/content/application~1json/examples/package":{"value":{"id":200,"object":"service","type":"package","package":{"exec_order":"sequential","pricing_type":"sum","price_discount_percent":10,"components":[{"service_id":1501,"position":1},{"service_id":1502,"position":2}]},"name":"Spa day","category_id":205,"duration_seconds":7200,"currency":"EUR","is_bookable":true,"team_members":[{"team_member_id":321}],"created_at":"2026-07-01T08:00:00Z","updated_at":"2026-07-10T09:30:00Z","price_minor":500000},"key":"package","summary":"A service package","id":"paths/~1locations~1{location_id}~1services/post/responses/201/content/application~1json/examples/package"},"paths/~1locations~1{location_id}~1services/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1services/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1services/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1services/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1services/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1services/post/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1services/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1services/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1services/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1services/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1services/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1services/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1services/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1services/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1services/post/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused":{"value":{"type":"https://developer.alteg.io/problems/idempotency-key-reused","title":"Idempotency key reused","status":409,"detail":"This Idempotency-Key was already used with a different request body.","instance":"urn:altegio:request:req_409a","code":"idempotency_key_reused"},"key":"idempotency_key_reused","summary":"Same key, different body","id":"paths/~1locations~1{location_id}~1services/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused"},"paths/~1locations~1{location_id}~1services/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress":{"value":{"type":"https://developer.alteg.io/problems/idempotency-request-in-progress","title":"Request in progress","status":409,"detail":"A request with this Idempotency-Key is still being processed. Retry later with the same key.","instance":"urn:altegio:request:req_409b","code":"idempotency_request_in_progress"},"key":"idempotency_request_in_progress","summary":"First request still in progress","id":"paths/~1locations~1{location_id}~1services/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"},"paths/~1locations~1{location_id}~1services/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1services/post/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/post/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1services/post/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1services/post/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1services/post/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1services/post/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/200/content/application~1json/examples/service":{"value":{"id":100,"object":"service","type":"simple","name":"Men's haircut","category_id":205,"duration_seconds":3600,"currency":"EUR","is_bookable":true,"team_members":[{"team_member_id":321},{"team_member_id":322,"duration_seconds":2700,"price_minor":300000}],"created_at":"2026-07-01T08:00:00Z","updated_at":"2026-07-10T09:30:00Z","price_minor":250000},"key":"service","summary":"A service","id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/200/content/application~1json/examples/service"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/200/content/application~1json/examples/package":{"value":{"id":200,"object":"service","type":"package","package":{"exec_order":"sequential","pricing_type":"sum","price_discount_percent":10,"components":[{"service_id":1501,"position":1},{"service_id":1502,"position":2}]},"name":"Spa day","category_id":205,"duration_seconds":7200,"currency":"EUR","is_bookable":true,"team_members":[{"team_member_id":321}],"created_at":"2026-07-01T08:00:00Z","updated_at":"2026-07-10T09:30:00Z","price_minor":500000},"key":"package","summary":"A service package","id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/200/content/application~1json/examples/package"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/requestBody/content/application~1merge-patch+json/example":{"value":{"price_minor":280000},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/requestBody/content/application~1merge-patch+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/200/content/application~1json/examples/service":{"value":{"id":100,"object":"service","type":"simple","name":"Men's haircut","category_id":205,"duration_seconds":3600,"currency":"EUR","is_bookable":true,"team_members":[{"team_member_id":321},{"team_member_id":322,"duration_seconds":2700,"price_minor":300000}],"created_at":"2026-07-01T08:00:00Z","updated_at":"2026-07-10T09:30:00Z","price_minor":250000},"key":"service","summary":"A service","id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/200/content/application~1json/examples/service"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/200/content/application~1json/examples/package":{"value":{"id":200,"object":"service","type":"package","package":{"exec_order":"sequential","pricing_type":"sum","price_discount_percent":10,"components":[{"service_id":1501,"position":1},{"service_id":1502,"position":2}]},"name":"Spa day","category_id":205,"duration_seconds":7200,"currency":"EUR","is_bookable":true,"team_members":[{"team_member_id":321}],"created_at":"2026-07-01T08:00:00Z","updated_at":"2026-07-10T09:30:00Z","price_minor":500000},"key":"package","summary":"A service package","id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/200/content/application~1json/examples/package"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/patch/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1services~1{service_id}/delete/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/get/responses/200/content/application~1json/example":{"value":{"object":"list","data":[{"id":205,"object":"service_category","name":"Haircuts","weight":10}],"has_more":false,"next_cursor":null},"id":"paths/~1locations~1{location_id}~1service_categories/get/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1service_categories/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1service_categories/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1service_categories/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1service_categories/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1service_categories/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1service_categories/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1service_categories/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1service_categories/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1service_categories/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1service_categories/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1service_categories/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1service_categories/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1service_categories/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1service_categories/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1service_categories/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1service_categories/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1service_categories/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1service_categories/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1service_categories/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1service_categories/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/post/requestBody/content/application~1json/example":{"value":{"name":"Haircuts","weight":10},"id":"paths/~1locations~1{location_id}~1service_categories/post/requestBody/content/application~1json/example"},"paths/~1locations~1{location_id}~1service_categories/post/responses/201/content/application~1json/example":{"value":{"id":205,"object":"service_category","name":"Haircuts","weight":10},"id":"paths/~1locations~1{location_id}~1service_categories/post/responses/201/content/application~1json/example"},"paths/~1locations~1{location_id}~1service_categories/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1service_categories/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1service_categories/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1service_categories/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1service_categories/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1service_categories/post/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1service_categories/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1service_categories/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1service_categories/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1service_categories/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1service_categories/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1service_categories/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1service_categories/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1service_categories/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1service_categories/post/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused":{"value":{"type":"https://developer.alteg.io/problems/idempotency-key-reused","title":"Idempotency key reused","status":409,"detail":"This Idempotency-Key was already used with a different request body.","instance":"urn:altegio:request:req_409a","code":"idempotency_key_reused"},"key":"idempotency_key_reused","summary":"Same key, different body","id":"paths/~1locations~1{location_id}~1service_categories/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused"},"paths/~1locations~1{location_id}~1service_categories/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress":{"value":{"type":"https://developer.alteg.io/problems/idempotency-request-in-progress","title":"Request in progress","status":409,"detail":"A request with this Idempotency-Key is still being processed. Retry later with the same key.","instance":"urn:altegio:request:req_409b","code":"idempotency_request_in_progress"},"key":"idempotency_request_in_progress","summary":"First request still in progress","id":"paths/~1locations~1{location_id}~1service_categories/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"},"paths/~1locations~1{location_id}~1service_categories/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1service_categories/post/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/post/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1service_categories/post/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1service_categories/post/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1service_categories/post/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1service_categories/post/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/requestBody/content/application~1merge-patch+json/example":{"value":{"name":"Cuts & styling"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/requestBody/content/application~1merge-patch+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/200/content/application~1json/example":{"value":{"id":205,"object":"service_category","name":"Cuts & styling","weight":10},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/patch/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1service_categories~1{service_category_id}/delete/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1products/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1products/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1products/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1products/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1products/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1products/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1products/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1products/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1products/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1products/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1products/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1products/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1products/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1products/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1products/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1products/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1products/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1products/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1products/get/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1products/get/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1products/get/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1products/get/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1products/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1products/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1products/get/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1products/get/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1products/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1products/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1products/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1products/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1products/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1products/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/get/responses/200/content/application~1json/example":{"value":{"object":"list","data":[{"id":321,"object":"team_member","name":"Aigerim Bekova","specialization":"Hairdresser","position_id":15,"service_ids":[100],"is_bookable":true,"created_at":"2026-06-01T08:00:00Z","updated_at":"2026-07-01T08:00:00Z"}],"has_more":false,"next_cursor":null},"id":"paths/~1locations~1{location_id}~1team_members/get/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1team_members/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1team_members/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1team_members/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1team_members/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1team_members/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1team_members/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1team_members/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1team_members/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1team_members/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1team_members/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1team_members/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1team_members/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1team_members/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1team_members/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1team_members/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1team_members/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1team_members/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1team_members/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1team_members/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1team_members/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/post/requestBody/content/application~1json/example":{"value":{"name":"Aigerim Bekova","specialization":"Hairdresser","position_id":15,"services":[{"service_id":100}]},"id":"paths/~1locations~1{location_id}~1team_members/post/requestBody/content/application~1json/example"},"paths/~1locations~1{location_id}~1team_members/post/responses/201/content/application~1json/examples/team_member":{"value":{"id":321,"object":"team_member","name":"Aigerim Bekova","specialization":"Hairdresser","position_id":15,"service_ids":[100],"is_bookable":true,"created_at":"2026-06-01T08:00:00Z","updated_at":"2026-07-01T08:00:00Z"},"key":"team_member","summary":"A Team Member","id":"paths/~1locations~1{location_id}~1team_members/post/responses/201/content/application~1json/examples/team_member"},"paths/~1locations~1{location_id}~1team_members/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1team_members/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1team_members/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1team_members/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1team_members/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1team_members/post/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1team_members/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1team_members/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1team_members/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1team_members/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1team_members/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1team_members/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1team_members/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1team_members/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1team_members/post/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused":{"value":{"type":"https://developer.alteg.io/problems/idempotency-key-reused","title":"Idempotency key reused","status":409,"detail":"This Idempotency-Key was already used with a different request body.","instance":"urn:altegio:request:req_409a","code":"idempotency_key_reused"},"key":"idempotency_key_reused","summary":"Same key, different body","id":"paths/~1locations~1{location_id}~1team_members/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused"},"paths/~1locations~1{location_id}~1team_members/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress":{"value":{"type":"https://developer.alteg.io/problems/idempotency-request-in-progress","title":"Request in progress","status":409,"detail":"A request with this Idempotency-Key is still being processed. Retry later with the same key.","instance":"urn:altegio:request:req_409b","code":"idempotency_request_in_progress"},"key":"idempotency_request_in_progress","summary":"First request still in progress","id":"paths/~1locations~1{location_id}~1team_members/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"},"paths/~1locations~1{location_id}~1team_members/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1team_members/post/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/post/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1team_members/post/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1team_members/post/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1team_members/post/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1team_members/post/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/200/content/application~1json/examples/team_member":{"value":{"id":321,"object":"team_member","name":"Aigerim Bekova","specialization":"Hairdresser","position_id":15,"service_ids":[100],"is_bookable":true,"created_at":"2026-06-01T08:00:00Z","updated_at":"2026-07-01T08:00:00Z"},"key":"team_member","summary":"A Team Member","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/200/content/application~1json/examples/team_member"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/requestBody/content/application~1merge-patch+json/example":{"value":{"position_id":16},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/requestBody/content/application~1merge-patch+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/200/content/application~1json/examples/team_member":{"value":{"id":321,"object":"team_member","name":"Aigerim Bekova","specialization":"Hairdresser","position_id":15,"service_ids":[100],"is_bookable":true,"created_at":"2026-06-01T08:00:00Z","updated_at":"2026-07-01T08:00:00Z"},"key":"team_member","summary":"A Team Member","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/200/content/application~1json/examples/team_member"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/patch/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}/delete/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/200/content/application~1json/example":{"value":{"object":"list","data":[{"date":"2026-07-24","slots":[{"from":"09:00","to":"13:00"},{"from":"14:00","to":"18:00"}]},{"date":"2026-07-25","slots":[{"from":"10:00","to":"16:00"}]}],"has_more":false,"next_cursor":null},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/requestBody/content/application~1merge-patch+json/example":{"value":{"2026-07-24":{"slots":[{"from":"09:00","to":"18:00"}]},"2026-07-25":null},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/requestBody/content/application~1merge-patch+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/200/content/application~1json/example":{"value":{"object":"list","data":[{"date":"2026-07-24","slots":[{"from":"09:00","to":"18:00"}]},{"date":"2026-07-25","slots":[]}],"has_more":false,"next_cursor":null},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1schedule/patch/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1access_roles/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1access_roles/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1access_roles/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1access_roles/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1access_roles/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1access_roles/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1access_roles/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1access_roles/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1access_roles/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1access_roles/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1access_roles/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1access_roles/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1access_roles/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1access_roles/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1access_roles/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1access_roles/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1access_roles/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1access_roles/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1access_roles/get/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1access_roles/get/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1access_roles/get/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1access_roles/get/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1access_roles/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1access_roles/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1access_roles/get/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1access_roles/get/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1access_roles/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1access_roles/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1access_roles/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1access_roles/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1access_roles/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1access_roles/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/requestBody/content/application~1merge-patch+json/example":{"value":{"role_id":7},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/requestBody/content/application~1merge-patch+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/patch/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1access/delete/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/requestBody/content/application~1json/example":{"value":{},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/requestBody/content/application~1json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1team_members~1{team_member_id}~1invitation/post/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/get/responses/200/content/application~1json/example":{"value":{"object":"list","data":[{"id":15,"object":"position","title":"Barber"}],"has_more":false,"next_cursor":null},"id":"paths/~1locations~1{location_id}~1positions/get/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1positions/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1positions/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1positions/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1positions/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1positions/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1positions/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1positions/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1positions/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1positions/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1positions/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1positions/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1positions/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1positions/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1positions/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1positions/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1positions/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1positions/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1positions/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1positions/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1positions/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/post/requestBody/content/application~1json/example":{"value":{"title":"Barber"},"id":"paths/~1locations~1{location_id}~1positions/post/requestBody/content/application~1json/example"},"paths/~1locations~1{location_id}~1positions/post/responses/201/content/application~1json/example":{"value":{"id":15,"object":"position","title":"Barber"},"id":"paths/~1locations~1{location_id}~1positions/post/responses/201/content/application~1json/example"},"paths/~1locations~1{location_id}~1positions/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1positions/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1positions/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1positions/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1positions/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1positions/post/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1positions/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1positions/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1positions/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1positions/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1positions/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1positions/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1positions/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1positions/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1positions/post/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused":{"value":{"type":"https://developer.alteg.io/problems/idempotency-key-reused","title":"Idempotency key reused","status":409,"detail":"This Idempotency-Key was already used with a different request body.","instance":"urn:altegio:request:req_409a","code":"idempotency_key_reused"},"key":"idempotency_key_reused","summary":"Same key, different body","id":"paths/~1locations~1{location_id}~1positions/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused"},"paths/~1locations~1{location_id}~1positions/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress":{"value":{"type":"https://developer.alteg.io/problems/idempotency-request-in-progress","title":"Request in progress","status":409,"detail":"A request with this Idempotency-Key is still being processed. Retry later with the same key.","instance":"urn:altegio:request:req_409b","code":"idempotency_request_in_progress"},"key":"idempotency_request_in_progress","summary":"First request still in progress","id":"paths/~1locations~1{location_id}~1positions/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"},"paths/~1locations~1{location_id}~1positions/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1positions/post/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/post/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1positions/post/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1positions/post/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1positions/post/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1positions/post/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/200/content/application~1json/example":{"value":{"id":15,"object":"position","title":"Barber"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/requestBody/content/application~1merge-patch+json/example":{"value":{"title":"Senior barber"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/requestBody/content/application~1merge-patch+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/200/content/application~1json/example":{"value":{"id":15,"object":"position","title":"Senior barber"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/patch/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1positions~1{position_id}/delete/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/get/responses/200/content/application~1json/example":{"value":{"object":"list","data":[{"id":789,"object":"client","name":"Demo","surname":"Client","patronymic":null,"display_name":"Demo Client","phone":"+351210000175","additional_phone":null,"email":"demo.client@example.com","birth_date":"1990-04-12","comment":null,"discount":5,"visits_count":12,"first_visit_at":"2025-11-02T10:00:00+00:00","last_visit_at":"2026-07-09T11:30:00+01:00","currency":"EUR","created_at":"2025-11-02T09:57:15Z","updated_at":"2026-07-09T09:57:15Z","sold_amount_minor":1250000}],"has_more":false,"next_cursor":null},"id":"paths/~1locations~1{location_id}~1clients/get/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1clients/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1clients/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1clients/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1clients/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1clients/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1clients/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1clients/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1clients/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1clients/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1clients/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1clients/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1clients/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1clients/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1clients/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1clients/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1clients/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1clients/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1clients/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1clients/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1clients/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/post/requestBody/content/application~1json/example":{"value":{"name":"Demo","surname":"Client","phone":"+351210000175","email":"demo.client@example.com","birth_date":"1990-04-12"},"id":"paths/~1locations~1{location_id}~1clients/post/requestBody/content/application~1json/example"},"paths/~1locations~1{location_id}~1clients/post/responses/201/content/application~1json/examples/client":{"value":{"id":789,"object":"client","name":"Demo","surname":"Client","patronymic":null,"display_name":"Demo Client","phone":"+351210000175","additional_phone":null,"email":"demo.client@example.com","birth_date":"1990-04-12","comment":null,"discount":5,"visits_count":12,"first_visit_at":"2025-11-02T10:00:00+00:00","last_visit_at":"2026-07-09T11:30:00+01:00","currency":"EUR","created_at":"2025-11-02T09:57:15Z","updated_at":"2026-07-09T09:57:15Z","sold_amount_minor":1250000},"key":"client","summary":"A client (contact fields visible)","id":"paths/~1locations~1{location_id}~1clients/post/responses/201/content/application~1json/examples/client"},"paths/~1locations~1{location_id}~1clients/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1clients/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1clients/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1clients/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1clients/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1clients/post/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1clients/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1clients/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1clients/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1clients/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1clients/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1clients/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1clients/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1clients/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1clients/post/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused":{"value":{"type":"https://developer.alteg.io/problems/idempotency-key-reused","title":"Idempotency key reused","status":409,"detail":"This Idempotency-Key was already used with a different request body.","instance":"urn:altegio:request:req_409a","code":"idempotency_key_reused"},"key":"idempotency_key_reused","summary":"Same key, different body","id":"paths/~1locations~1{location_id}~1clients/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused"},"paths/~1locations~1{location_id}~1clients/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress":{"value":{"type":"https://developer.alteg.io/problems/idempotency-request-in-progress","title":"Request in progress","status":409,"detail":"A request with this Idempotency-Key is still being processed. Retry later with the same key.","instance":"urn:altegio:request:req_409b","code":"idempotency_request_in_progress"},"key":"idempotency_request_in_progress","summary":"First request still in progress","id":"paths/~1locations~1{location_id}~1clients/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"},"paths/~1locations~1{location_id}~1clients/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1clients/post/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/post/responses/422/content/application~1problem+json/examples/phone_taken":{"value":{"type":"https://developer.alteg.io/problems/phone-taken","title":"Phone number already in use","status":422,"detail":"Another client of this location already uses this phone number.","instance":"urn:altegio:request:req_c1x9","code":"phone_taken"},"key":"phone_taken","summary":"Phone already belongs to another client","id":"paths/~1locations~1{location_id}~1clients/post/responses/422/content/application~1problem+json/examples/phone_taken"},"paths/~1locations~1{location_id}~1clients/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1clients/post/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1clients/post/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1clients/post/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/200/content/application~1json/examples/client":{"value":{"id":789,"object":"client","name":"Demo","surname":"Client","patronymic":null,"display_name":"Demo Client","phone":"+351210000175","additional_phone":null,"email":"demo.client@example.com","birth_date":"1990-04-12","comment":null,"discount":5,"visits_count":12,"first_visit_at":"2025-11-02T10:00:00+00:00","last_visit_at":"2026-07-09T11:30:00+01:00","currency":"EUR","created_at":"2025-11-02T09:57:15Z","updated_at":"2026-07-09T09:57:15Z","sold_amount_minor":1250000},"key":"client","summary":"A client (contact fields visible)","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/200/content/application~1json/examples/client"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/requestBody/content/application~1merge-patch+json/example":{"value":{"email":"new.email@example.com","comment":"Prefers morning visits"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/requestBody/content/application~1merge-patch+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/200/content/application~1json/examples/client":{"value":{"id":789,"object":"client","name":"Demo","surname":"Client","patronymic":null,"display_name":"Demo Client","phone":"+351210000175","additional_phone":null,"email":"demo.client@example.com","birth_date":"1990-04-12","comment":null,"discount":5,"visits_count":12,"first_visit_at":"2025-11-02T10:00:00+00:00","last_visit_at":"2026-07-09T11:30:00+01:00","currency":"EUR","created_at":"2025-11-02T09:57:15Z","updated_at":"2026-07-09T09:57:15Z","sold_amount_minor":1250000},"key":"client","summary":"A client (contact fields visible)","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/200/content/application~1json/examples/client"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/422/content/application~1problem+json/examples/phone_taken":{"value":{"type":"https://developer.alteg.io/problems/phone-taken","title":"Phone number already in use","status":422,"detail":"Another client of this location already uses this phone number.","instance":"urn:altegio:request:req_c4x2","code":"phone_taken"},"key":"phone_taken","summary":"Phone already belongs to another client","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/422/content/application~1problem+json/examples/phone_taken"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/patch/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1clients~1{client_id}/delete/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1availability/get/responses/200/content/application~1json/example":{"value":{"object":"list","data":[{"object":"availability_slot","team_member_id":321,"starts_at":"2026-07-24T11:30:00+01:00","is_bookable":true},{"object":"availability_slot","team_member_id":321,"starts_at":"2026-07-24T12:30:00+01:00","is_bookable":true}],"has_more":false,"next_cursor":null},"id":"paths/~1locations~1{location_id}~1availability/get/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1availability/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1availability/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1availability/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1availability/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1availability/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1availability/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1availability/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1availability/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1availability/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1availability/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1availability/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1availability/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1availability/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1availability/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1availability/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1availability/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1availability/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1availability/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1availability/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1availability/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1availability/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1availability/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1availability/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1availability/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1availability/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1availability/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1resources/get/responses/200/content/application~1json/example":{"value":{"object":"list","data":[{"id":41,"object":"resource","title":"Massage room","instances":[{"id":411,"object":"resource_instance","title":"Room 1"},{"id":412,"object":"resource_instance","title":"Room 2"}]}],"has_more":false,"next_cursor":null},"id":"paths/~1locations~1{location_id}~1resources/get/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1resources/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1resources/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1resources/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1resources/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1resources/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1resources/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1resources/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1resources/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1resources/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1resources/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1resources/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1resources/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1resources/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1resources/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1resources/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1resources/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1resources/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1resources/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1resources/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1resources/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1resources/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1resources/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1resources/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1resources/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1resources/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1resources/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withExistingClient":{"value":{"client_id":789,"team_member_id":321,"service_ids":[100],"starts_at":"2026-07-24T11:30:00+01:00"},"key":"withExistingClient","summary":"Book for an existing client","id":"paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withExistingClient"},"paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withInlineClient":{"value":{"client":{"name":"Demo Client","phone":"+351210000175"},"team_member_id":321,"service_ids":[100],"starts_at":"2026-07-24T11:30:00+01:00","comment":"First visit"},"key":"withInlineClient","summary":"Book with an inline client","id":"paths/~1locations~1{location_id}~1appointments/post/requestBody/content/application~1json/examples/withInlineClient"},"paths/~1locations~1{location_id}~1appointments/post/responses/201/content/application~1json/examples/appointment":{"value":{"id":12345,"object":"appointment","location_id":4321,"client_id":789,"visit_id":5001,"team_member_id":321,"service_ids":[100],"resource_instance_ids":[],"status":"waiting","starts_at":"2026-07-24T11:30:00+01:00","ends_at":"2026-07-24T12:30:00+01:00","duration_seconds":3600,"is_paid":false,"comment":null,"cancelled_at":null,"cancellation_reason":null,"created_at":"2026-07-20T09:57:15Z","updated_at":"2026-07-20T09:57:15Z"},"key":"appointment","summary":"An appointment","id":"paths/~1locations~1{location_id}~1appointments/post/responses/201/content/application~1json/examples/appointment"},"paths/~1locations~1{location_id}~1appointments/post/responses/201/content/application~1json/examples/package":{"value":{"object":"appointment_create_result","visit_id":5001,"appointments":[]},"key":"package","summary":"Package appointment result","id":"paths/~1locations~1{location_id}~1appointments/post/responses/201/content/application~1json/examples/package"},"paths/~1locations~1{location_id}~1appointments/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1appointments/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1appointments/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1appointments/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1appointments/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1appointments/post/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1appointments/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1appointments/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1appointments/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1appointments/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1appointments/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1appointments/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1appointments/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1appointments/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1appointments/post/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/post/responses/409/content/application~1problem+json/examples/slot_taken":{"value":{"type":"https://developer.alteg.io/problems/slot-taken","title":"Time slot is no longer available","status":409,"detail":"The requested time slot was taken by another appointment request.","instance":"urn:altegio:request:req_ap1x","code":"slot_taken"},"key":"slot_taken","summary":"Slot lost to a parallel appointment creation","id":"paths/~1locations~1{location_id}~1appointments/post/responses/409/content/application~1problem+json/examples/slot_taken"},"paths/~1locations~1{location_id}~1appointments/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1appointments/post/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/post/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1appointments/post/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1appointments/post/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1appointments/post/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1appointments/post/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/get/responses/200/content/application~1json/example":{"value":{"object":"list","data":[{"id":12345,"object":"appointment","location_id":4321,"client_id":789,"visit_id":5001,"team_member_id":321,"service_ids":[100],"resource_instance_ids":[],"status":"waiting","starts_at":"2026-07-24T11:30:00+01:00","ends_at":"2026-07-24T12:30:00+01:00","duration_seconds":3600,"is_paid":false,"comment":null,"cancelled_at":null,"cancellation_reason":null,"created_at":"2026-07-20T09:57:15Z","updated_at":"2026-07-20T09:57:15Z"}],"has_more":true,"next_cursor":"cur_appt_01J3K6Y8Q4W5E9R2T7A1B0C3D4"},"id":"paths/~1locations~1{location_id}~1appointments/get/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1appointments/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1appointments/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1appointments/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1appointments/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1appointments/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1appointments/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1appointments/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1appointments/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1appointments/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1appointments/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1appointments/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1appointments/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1appointments/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1appointments/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1appointments/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1appointments/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1appointments/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1appointments/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1appointments/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1appointments/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/200/content/application~1json/examples/appointment":{"value":{"id":12345,"object":"appointment","location_id":4321,"client_id":789,"visit_id":5001,"team_member_id":321,"service_ids":[100],"resource_instance_ids":[],"status":"waiting","starts_at":"2026-07-24T11:30:00+01:00","ends_at":"2026-07-24T12:30:00+01:00","duration_seconds":3600,"is_paid":false,"comment":null,"cancelled_at":null,"cancellation_reason":null,"created_at":"2026-07-20T09:57:15Z","updated_at":"2026-07-20T09:57:15Z"},"key":"appointment","summary":"An appointment","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/200/content/application~1json/examples/appointment"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/requestBody/content/application~1merge-patch+json/example":{"value":{"starts_at":"2026-07-24T15:00:00+01:00","team_member_id":322},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/requestBody/content/application~1merge-patch+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/200/content/application~1json/examples/appointment":{"value":{"id":12345,"object":"appointment","location_id":4321,"client_id":789,"visit_id":5001,"team_member_id":321,"service_ids":[100],"resource_instance_ids":[],"status":"waiting","starts_at":"2026-07-24T11:30:00+01:00","ends_at":"2026-07-24T12:30:00+01:00","duration_seconds":3600,"is_paid":false,"comment":null,"cancelled_at":null,"cancellation_reason":null,"created_at":"2026-07-20T09:57:15Z","updated_at":"2026-07-20T09:57:15Z"},"key":"appointment","summary":"An appointment","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/200/content/application~1json/examples/appointment"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}/patch/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/requestBody/content/application~1json/example":{"value":{"reason":"client_request","notify_client":true},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/requestBody/content/application~1json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/200/content/application~1json/example":{"value":{"id":12345,"object":"appointment","location_id":4321,"client_id":789,"visit_id":5001,"team_member_id":321,"service_ids":[100],"resource_instance_ids":[],"status":"cancelled","starts_at":"2026-07-24T11:30:00+01:00","ends_at":"2026-07-24T12:30:00+01:00","duration_seconds":3600,"is_paid":false,"comment":null,"cancelled_at":"2026-07-22T05:15:00Z","cancellation_reason":"client_request","created_at":"2026-07-20T09:57:15Z","updated_at":"2026-07-22T05:15:00Z"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused":{"value":{"type":"https://developer.alteg.io/problems/idempotency-key-reused","title":"Idempotency key reused","status":409,"detail":"This Idempotency-Key was already used with a different request body.","instance":"urn:altegio:request:req_409a","code":"idempotency_key_reused"},"key":"idempotency_key_reused","summary":"Same key, different body","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress":{"value":{"type":"https://developer.alteg.io/problems/idempotency-request-in-progress","title":"Request in progress","status":409,"detail":"A request with this Idempotency-Key is still being processed. Retry later with the same key.","instance":"urn:altegio:request:req_409b","code":"idempotency_request_in_progress"},"key":"idempotency_request_in_progress","summary":"First request still in progress","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1cancel/post/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/requestBody/content/application~1json/example":{"value":{"status":"arrived"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/requestBody/content/application~1json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/200/content/application~1json/example":{"value":{"id":12345,"object":"appointment","location_id":4321,"client_id":789,"visit_id":5001,"team_member_id":321,"service_ids":[100],"resource_instance_ids":[],"status":"arrived","starts_at":"2026-07-24T11:30:00+01:00","ends_at":"2026-07-24T12:30:00+01:00","duration_seconds":3600,"is_paid":true,"comment":null,"cancelled_at":null,"cancellation_reason":null,"created_at":"2026-07-20T09:57:15Z","updated_at":"2026-07-24T13:05:00Z"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused":{"value":{"type":"https://developer.alteg.io/problems/idempotency-key-reused","title":"Idempotency key reused","status":409,"detail":"This Idempotency-Key was already used with a different request body.","instance":"urn:altegio:request:req_409a","code":"idempotency_key_reused"},"key":"idempotency_key_reused","summary":"Same key, different body","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress":{"value":{"type":"https://developer.alteg.io/problems/idempotency-request-in-progress","title":"Request in progress","status":409,"detail":"A request with this Idempotency-Key is still being processed. Retry later with the same key.","instance":"urn:altegio:request:req_409b","code":"idempotency_request_in_progress"},"key":"idempotency_request_in_progress","summary":"First request still in progress","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1status/post/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/200/content/application~1json/examples/visit":{"value":{"id":5001,"object":"visit","location_id":4321,"appointment_ids":[12345],"status":"arrived","items":[{"id":8101,"object":"visit_item","type":"service","service_id":100,"title":"Men's haircut","quantity":1,"price_minor":250000,"amount_minor":250000}],"payments":[{"id":"t9001","object":"payment","visit_id":5001,"type":"payment_method","payment_method_id":71,"account_id":13,"amount_minor":250000,"fee_minor":2500,"currency":"EUR","card_brand_id":1,"installment_count":null,"status":"completed","covers_items":[],"refund":null,"created_at":"2026-07-24T13:00:00Z"}],"currency":"EUR","created_at":"2026-07-24T11:30:00Z","updated_at":"2026-07-24T13:00:00Z","amount_to_pay_minor":0,"payment_methods":[{"id":71,"object":"applicable_payment_method","type":"payment_method","name":"Bank card","payment_method_id":71,"account_id":13,"number":null,"is_applicable":true,"applicable_amount_minor":250000,"is_partial_allowed":true}]},"key":"visit","summary":"A visit with one paid service","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/200/content/application~1json/examples/visit"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/requestBody/content/application~1json/examples/product":{"value":{"product_id":4417,"quantity":1},"key":"product","summary":"Add one product to the visit","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/requestBody/content/application~1json/examples/product"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/201/content/application~1json/examples/visit":{"value":{"id":5001,"object":"visit","location_id":4321,"appointment_ids":[12345],"status":"arrived","items":[{"id":8101,"object":"visit_item","type":"service","service_id":100,"title":"Men's haircut","quantity":1,"price_minor":250000,"amount_minor":250000}],"payments":[{"id":"t9001","object":"payment","visit_id":5001,"type":"payment_method","payment_method_id":71,"account_id":13,"amount_minor":250000,"fee_minor":2500,"currency":"EUR","card_brand_id":1,"installment_count":null,"status":"completed","covers_items":[],"refund":null,"created_at":"2026-07-24T13:00:00Z"}],"currency":"EUR","created_at":"2026-07-24T11:30:00Z","updated_at":"2026-07-24T13:00:00Z","amount_to_pay_minor":0,"payment_methods":[{"id":71,"object":"applicable_payment_method","type":"payment_method","name":"Bank card","payment_method_id":71,"account_id":13,"number":null,"is_applicable":true,"applicable_amount_minor":250000,"is_partial_allowed":true}]},"key":"visit","summary":"A visit with one paid service","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/201/content/application~1json/examples/visit"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1visit~1items/post/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/200/content/application~1json/example":{"value":{"object":"list","data":[{"id":71,"object":"payment_method","slug":"card","name":"Bank card","default_account_id":12,"fee_rate":1.5,"card_brands":[{"id":1,"title":"Visa"},{"id":2,"title":"Mastercard"}],"installments":[]}],"has_more":false,"next_cursor":null},"id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1payment_methods/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1payment_methods/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1accounts/get/responses/200/content/application~1json/example":{"value":{"object":"list","data":[{"id":12,"object":"account","title":"Main cash desk","type_slug":"cash","is_acquiring":false},{"id":13,"object":"account","title":"Acquiring","type_slug":"cashless","is_acquiring":true}],"has_more":false,"next_cursor":null},"id":"paths/~1locations~1{location_id}~1accounts/get/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1accounts/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1accounts/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1accounts/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1accounts/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1accounts/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1accounts/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1accounts/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1accounts/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1accounts/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1accounts/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1accounts/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1accounts/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1accounts/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1accounts/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1accounts/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1accounts/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1accounts/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1accounts/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1accounts/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1accounts/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1accounts/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1accounts/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1accounts/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1accounts/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1accounts/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1accounts/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/409/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/conflict","title":"Conflict","status":409,"detail":"The requested change conflicts with current resource state.","instance":"urn:altegio:request:req_409x","code":"conflict"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/409/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/412/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/stale-version","title":"Resource version is stale","status":412,"detail":"The resource was modified after the version supplied in If-Match. Re-read it and retry.","instance":"urn:altegio:request:req_412x","code":"stale_version"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/412/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/428/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/precondition-required","title":"Precondition required","status":428,"detail":"This operation requires the If-Match header with the last seen ETag.","instance":"urn:altegio:request:req_428x","code":"precondition_required"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/428/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payment_methods~1search/get/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/cardViaMethod":{"value":{"type":"payment_method","payment_method_id":71,"account_id":13,"amount_minor":250000,"card_brand_id":1},"key":"cardViaMethod","summary":"Card payment via a configured method","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/cardViaMethod"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/directToAccount":{"value":{"type":"account","account_id":12,"amount_minor":100000},"key":"directToAccount","summary":"Direct payment to an account","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/directToAccount"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipByNumber":{"value":{"type":"membership","number":"472671"},"key":"membershipByNumber","summary":"Spend a membership session (no amount - sessions, not money)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipByNumber"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipWithoutCode":{"value":{"type":"membership","membership_id":5298007},"key":"membershipWithoutCode","summary":"Spend a membership that carries no code","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/membershipWithoutCode"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/depositPartial":{"value":{"type":"deposit","deposit_id":862771,"amount_minor":900},"key":"depositPartial","summary":"Part of the amount from the client's deposit","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/depositPartial"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/referralProgram":{"value":{"type":"referral_program","referral_program_id":30411,"referrer_phone":"+5511999999999","amount_minor":900},"key":"referralProgram","summary":"Apply one of the referral programs the client is eligible for","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/requestBody/content/application~1json/examples/referralProgram"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/201/content/application~1json/examples/payment":{"value":{"id":"t9001","object":"payment","visit_id":5001,"type":"payment_method","payment_method_id":71,"account_id":13,"amount_minor":250000,"fee_minor":2500,"currency":"EUR","card_brand_id":1,"installment_count":null,"status":"completed","covers_items":[],"refund":null,"created_at":"2026-07-24T13:00:00Z"},"key":"payment","summary":"A registered payment","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/201/content/application~1json/examples/payment"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused":{"value":{"type":"https://developer.alteg.io/problems/idempotency-key-reused","title":"Idempotency key reused","status":409,"detail":"This Idempotency-Key was already used with a different request body.","instance":"urn:altegio:request:req_409a","code":"idempotency_key_reused"},"key":"idempotency_key_reused","summary":"Same key, different body","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress":{"value":{"type":"https://developer.alteg.io/problems/idempotency-request-in-progress","title":"Request in progress","status":409,"detail":"A request with this Idempotency-Key is still being processed. Retry later with the same key.","instance":"urn:altegio:request:req_409b","code":"idempotency_request_in_progress"},"key":"idempotency_request_in_progress","summary":"First request still in progress","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/422/content/application~1problem+json/examples/exceeds_unpaid":{"value":{"type":"https://developer.alteg.io/problems/exceeds-unpaid","title":"Payment exceeds unpaid amount","status":422,"detail":"The payment amount is greater than the remaining unpaid amount of the visit.","instance":"urn:altegio:request:req_v2x7","code":"exceeds_unpaid"},"key":"exceeds_unpaid","summary":"Amount exceeds the unpaid remainder","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/422/content/application~1problem+json/examples/exceeds_unpaid"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/422/content/application~1problem+json/examples/instrument_not_applicable":{"value":{"type":"https://developer.alteg.io/problems/instrument-not-applicable","title":"Instrument not applicable","status":422,"detail":"The gift card or membership cannot be applied to this visit.","instance":"urn:altegio:request:req_v2x8","code":"instrument_not_applicable"},"key":"instrument_not_applicable","summary":"Loyalty instrument not usable for this visit","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/422/content/application~1problem+json/examples/instrument_not_applicable"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments/post/responses/503/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/200/content/application~1json/example":{"value":{"id":"t9001","object":"payment","visit_id":5001,"type":"payment_method","payment_method_id":71,"account_id":13,"amount_minor":250000,"fee_minor":2500,"currency":"EUR","card_brand_id":1,"installment_count":null,"status":"refunded","covers_items":[],"refund":{"id":"t9001","object":"refund","payment_id":"t9001","amount_minor":250000,"created_at":"2026-07-24T14:10:00Z"},"created_at":"2026-07-24T13:00:00Z"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/200/content/application~1json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/400/content/application~1problem+json/examples/bad_request":{"value":{"type":"https://developer.alteg.io/problems/bad-request","title":"Bad request","status":400,"detail":"The request could not be processed.","instance":"urn:altegio:request:req_400a","code":"bad_request"},"key":"bad_request","summary":"Generic client reject (status default)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/400/content/application~1problem+json/examples/bad_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/400/content/application~1problem+json/examples/malformed_request":{"value":{"type":"https://developer.alteg.io/problems/malformed-request","title":"Malformed request","status":400,"detail":"The request body is not valid JSON.","instance":"urn:altegio:request:req_400b","code":"malformed_request"},"key":"malformed_request","summary":"Broken JSON / protocol only","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/400/content/application~1problem+json/examples/malformed_request"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/401/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/invalid-token","title":"Invalid or expired token","status":401,"detail":"The access token is missing, expired, or revoked.","instance":"urn:altegio:request:req_401x","code":"invalid_token"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/401/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/403/content/application~1problem+json/examples/missing_scope":{"value":{"type":"https://developer.alteg.io/problems/missing-scope","title":"Missing scope","status":403,"detail":"The access token does not carry the scope required by this operation.","instance":"urn:altegio:request:req_403a","code":"missing_scope"},"key":"missing_scope","summary":"Token scope is insufficient","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/403/content/application~1problem+json/examples/missing_scope"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/403/content/application~1problem+json/examples/permission_denied":{"value":{"type":"https://developer.alteg.io/problems/permission-denied","title":"Permission denied","status":403,"detail":"The token subject does not have the required permission in this location.","instance":"urn:altegio:request:req_403b","code":"permission_denied"},"key":"permission_denied","summary":"Subject lacks the business permission","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/403/content/application~1problem+json/examples/permission_denied"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/404/content/application~1problem+json/examples/resource_not_found":{"value":{"type":"https://developer.alteg.io/problems/resource-not-found","title":"Resource not found","status":404,"detail":"The requested resource was not found.","instance":"urn:altegio:request:req_404a","code":"resource_not_found"},"key":"resource_not_found","summary":"Generic 404 (routing / gate / hidden)","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/404/content/application~1problem+json/examples/resource_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/404/content/application~1problem+json/examples/appointment_not_found":{"value":{"type":"https://developer.alteg.io/problems/appointment-not-found","title":"Appointment not found","status":404,"detail":"The requested resource does not exist in this location.","instance":"urn:altegio:request:req_404b","code":"appointment_not_found"},"key":"appointment_not_found","summary":"Resource-specific 404","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/404/content/application~1problem+json/examples/appointment_not_found"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/406/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/not-acceptable","title":"Not acceptable","status":406,"detail":"Use Accept application/json for resources and application/problem+json for errors.","instance":"urn:altegio:request:req_406x","code":"not_acceptable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/406/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused":{"value":{"type":"https://developer.alteg.io/problems/idempotency-key-reused","title":"Idempotency key reused","status":409,"detail":"This Idempotency-Key was already used with a different request body.","instance":"urn:altegio:request:req_409a","code":"idempotency_key_reused"},"key":"idempotency_key_reused","summary":"Same key, different body","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/409/content/application~1problem+json/examples/idempotency_key_reused"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress":{"value":{"type":"https://developer.alteg.io/problems/idempotency-request-in-progress","title":"Request in progress","status":409,"detail":"A request with this Idempotency-Key is still being processed. Retry later with the same key.","instance":"urn:altegio:request:req_409b","code":"idempotency_request_in_progress"},"key":"idempotency_request_in_progress","summary":"First request still in progress","id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/409/content/application~1problem+json/examples/idempotency_request_in_progress"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/415/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/unsupported-media-type","title":"Unsupported media type","status":415,"detail":"Use application/json or application/merge-patch+json as documented.","instance":"urn:altegio:request:req_415x","code":"unsupported_media_type"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/415/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/422/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/validation-error","title":"Request validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:altegio:request:req_422x","code":"validation_failed","errors":[{"code":"invalid_datetime","pointer":"/starts_at","message":"starts_at must be a valid RFC 3339 datetime.","source":"body"}]},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/422/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/429/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/rate-limit-exceeded","title":"Rate limit exceeded","status":429,"detail":"Too many requests. Retry after the interval in Retry-After.","instance":"urn:altegio:request:req_429x","code":"rate_limit_exceeded"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/429/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/500/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/internal-error","title":"Internal error","status":500,"detail":"An unexpected error occurred.","instance":"urn:altegio:request:req_500x","code":"internal_error"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/500/content/application~1problem+json/example"},"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/503/content/application~1problem+json/example":{"value":{"type":"https://developer.alteg.io/problems/dependency-unavailable","title":"Dependency unavailable","status":503,"detail":"A required dependency is unavailable. The operation was not performed.","instance":"urn:altegio:request:req_503x","code":"dependency_unavailable"},"id":"paths/~1locations~1{location_id}~1appointments~1{appointment_id}~1payments~1{payment_id}~1refund/post/responses/503/content/application~1problem+json/example"}},"securitySchemeStore":{"OAuth2":{"id":"OAuth2","type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opaque"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Bearer tokens (access tokens live about 15 minutes)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Machine-to-machine integrations use the Client Credentials flow with an explicit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"location_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; user-facing applications use Authorization Code + PKCE with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rotating refresh token. There is no public password grant. See the Authorization"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"section of the API description for full walkthroughs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grant "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:write"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"read_contact"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and action-scopes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"capture"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"refund"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manage_access"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are never implied."},"children":[]}]}]}],"flows":{"authorizationCode":{"authorizationUrl":"https://api.alteg.io/oauth/authorize","tokenUrl":"https://api.alteg.io/oauth/token","refreshUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","locations:create":"Create locations","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","team_members:manage_access":"Manage team member system access and roles","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments","chain_services:read":"View chain service catalog","chain_services:write":"Manage chain service catalog","chain_clients:read":"View chain client base","chain_loyalty:read":"View chain loyalty instruments"}},"clientCredentials":{"tokenUrl":"https://api.alteg.io/oauth/token","scopes":{"locations:read":"View location info","locations:write":"Manage location settings","services:read":"View services and service categories","services:write":"Manage services and service categories. Also covers bills of materials when they ship","products:read":"View product catalog","team_members:read":"View team members, schedules, and positions","team_members:write":"Add and update team members, schedules, and positions","clients:read":"View clients. Does not include client files, comments, or labels — those get their own scopes","clients:read_contact":"View client contact details","clients:write":"Manage clients. Does not include client files, comments, or labels — those get their own scopes","availability:read":"View bookable time slots, including which team member is free","appointments:read":"View appointments. Also covers the waiting list and appointment custom fields when they ship","appointments:create":"Create appointments","appointments:write":"Manage appointments (edit, cancel, status). Also covers visit grouping and waiting-list management when they ship","visits:read":"View visit and payment state","visits:write":"Add items to a visit","payments:read":"View payment methods","payments:capture":"Record payments","payments:refund":"Reverse payments locally","finance:read":"View cash registers and financial accounts","loyalty:read":"View loyalty instruments"}}}},"RestrictedKey":{"id":"RestrictedKey","type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A restricted key created in the Altegio cabinet for single-business integrations."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The key itself is the Bearer credential — no token exchange. Restricted keys carry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scopes from the same public catalog as OAuth tokens (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payments:refund"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when granted), except credential-class exclusions such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"team_members:manage_access"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the first iteration. They can be revoked in the cabinet at any time."},"children":[]}]}]}]}},"servers":[{"url":"/_mock/en/b2b-v3/openapi","isMockServer":true,"description":"Mock server"},{"url":"https://api.alteg.io/api/v3","description":"Preview resource API contract - endpoint surface is not live yet"}]},"options":{"sortRequiredPropsFirst":true,"hideSidebar":true,"mockServer":{"url":"/_mock/en/b2b-v3/openapi","position":"first","description":"Mock server"},"disableRouter":true,"downloadUrls":[{"url":"/_bundle/en/b2b-v3/openapi.json?download"},{"url":"/_bundle/en/b2b-v3/openapi.yaml?download"}],"excludeFromSearch":false,"specType":"openapi","markdocOptions":{"tags":{},"nodes":{},"components":{}},"metadata":{"title":"Business Management","description":"> ⚠️ **Preview — this API is not live yet.** Planned release: **October 2026**. The endpoint surface is not deployed; paths and schemas may change before the contract freeze, and try-it and production calls are unavailable.\n\n# Overview\n\nThe Business Management API V3 is Altegio's next-generation public REST API.\nThis document is a **preview of the V3 contract**: it describes the target API surface so\npartners and tooling can review it before the endpoints go live.\n\n**Preview status — please read first:**\n\n- This is a **contract preview, not a live production API**. The endpoint surface is not\n  deployed yet; try-it consoles and production calls are unavailable.\n- Paths, schemas, and field names **may change before the contract freeze** without\n  backward-compatibility guarantees.\n- Every operation carries an `x-altegio-status`. Three values are defined:\n  `planned` — designed, not scheduled for the first production release;\n  `preview` — contract published for review, not deployed;\n  `available` — live in production and covered by the October 2026 release promise.\n  **Today every operation is `preview`** — none of them is deployed yet. The October\n  release covers only operations marked `available`, so publishing the full target\n  surface here is not a promise that all of it ships at once.\n  `available` is enforced by CI in `biz.erp`: an `available` operation without a registered\n  route fails the OpenAPI conformance gate.\n- Where a design decision is still pending, the affected element also carries\n  `x-altegio-assumption` describing the open question.\n\n**Base URL (resource API):** `https://api.alteg.io/api/v3`\n\nAll resources are under `/api/v3` and scoped to a Location:\n`/api/v3/locations/{location_id}/...`. The `location_id` in the path is verified against\nthe credential used for the call — a Location the credential cannot access responds with\n`404`. OAuth and discovery endpoints live on the authorization host root\n`https://api.alteg.io` (no `/api/v3` prefix) — see the Authorization tag.\n\n**Canonical terms.** V3 uses one public name per entity:\n\n| Term | Meaning |\n|---|---|\n| `location` | A business location (branch). |\n| `team_member` | A person on the Location's team who provides services. |\n| `service` | A bookable service offered at a Location. |\n| `client` | A person served by a Location — the person appointments are scheduled for. |\n| `appointment` | A scheduled visit entry for one Team Member. |\n| `visit` | The billing unit that groups appointments and carries items and payments. |\n\n**Response format.** V3 is flat resource REST. Single resources are plain\nJSON objects with integer `id` and a string `object` type marker. Lists use one predictable\nenvelope. V3 does **not** use JSON:API (`data.attributes`) or wrapper envelopes such as `{success,data,meta}`\nenvelopes.\n\n**Object types.** Every resource declares its kind in the `object` field — the full\ndictionary of this preview:\n\n| `object` | What it is |\n|---|---|\n| `location` | A business location and its settings. |\n| `service` / `service_category` | Catalog: a bookable service (simple or package) and its category. |\n| `team_member` / `position` | A person on the team and the position dictionary. |\n| `client` | A person served by a Location. |\n| `availability_slot` | A bookable time slot (computed, read-only). |\n| `resource` / `resource_instance` | Bookable resources (rooms, equipment) and their instances. |\n| `appointment` | A scheduled entry for one Team Member. |\n| `visit` / `visit_item` | The billing unit grouping appointments; its service/product lines. |\n| `payment` / `refund` | A payment applied to a visit and its local reversal. |\n| `payment_method` / `account` | Payment configuration dictionaries of the Location. |\n| `product` | A sellable product from the Location catalog (minimal P0 read). |\n| `accessible_resource` | A Location or chain grant visible on the current token. |\n| `team_member_access` | System-access status and role for a Team Member. |\n| `appointment_create_result` | Package booking result with multiple appointments. |\n| `list` | The list envelope wrapping any collection response. |\n\n# Authorization\n\nV3 accepts exactly one credential shape on every call:\n\n```\nAuthorization: Bearer <token>\n```\n\nTokens are **opaque** strings — never parse or decode them. Access tokens are short-lived\n(about 15 minutes). There is **no public password grant**: applications never collect\nAltegio passwords. Three ways to obtain a credential are supported.\n\n## Client Credentials + `location_id` (marketplace, machine-to-machine)\n\nFor marketplace applications acting autonomously (backends, background jobs, agents):\n\n1. A business installs your application in a Location and approves the scopes your\n   application requests.\n2. Your backend calls `POST /oauth/token` with `grant_type=client_credentials`, HTTP Basic\n   client authentication (`client_id` / `client_secret`), and the explicit `location_id` you\n   want to act in. One token is bound to **one** Location — an application installed in\n   twenty Locations requests twenty tokens, and there is no account-wide token.\n3. The server resolves your installation from the authenticated OAuth client plus that\n   Location, verifies the installation is active, and issues a short-lived opaque access\n   token. The token **acts on behalf of the installation** — writes are allowed within\n   the scopes the business granted at install time.\n4. Call the API with `Authorization: Bearer <access_token>`. This flow has **no refresh\n   token** — request a new access token when the current one expires.\n\n**Not every scope exists in every credential class.** The `scopes` list published under\neach OAuth flow is the set that flow can actually be granted — requesting anything outside\nit fails with `invalid_scope`. Restricted keys use the same public catalog, except for\ncredential-class exclusions called out here:\n\n| Scope | First-iteration availability |\n|---|---|\n| `chain_*` (4 scopes) | Authorization Code and restricted keys may hold chain grants. A chain-wide marketplace installation is not part of the first iteration, so Client Credentials cannot receive them. |\n| `locations:create` | Authorization Code only. Creating a Location is account-level; Client Credentials always act inside one existing Location, and restricted keys cannot create new Locations. |\n| `team_members:manage_access` | Authorization Code only in the first iteration. Client Credentials and restricted keys cannot grant, revoke, invite, or change ERP access. |\n\nScopes are added to a flow or credential class, never removed: adding one later is\nbackward-compatible, so the published lists start conservative.\n\n## Authorization Code + PKCE (user-delegated)\n\nFor applications and agent hosts acting on behalf of a specific Business User:\n\n1. Redirect the user's browser to `GET /oauth/authorize` with `client_id`, `redirect_uri`,\n   `scope`, `state`, and a PKCE `code_challenge` (S256).\n2. The user logs in with their Altegio account.\n3. A **consent screen** lists the requested scopes; the user grants or declines access.\n4. The browser is redirected back to your `redirect_uri` with a short-lived, one-time\n   authorization `code` (and your `state`).\n5. Exchange the code at `POST /oauth/token` with `grant_type=authorization_code` and the\n   PKCE `code_verifier` — the response contains an access token and a **rotating refresh\n   token**.\n6. Refresh with `grant_type=refresh_token`. Every use rotates the refresh token; replaying\n   an already-used refresh token revokes the whole token family.\n\n`GET /oauth/authorize` is a **browser web flow** (HTML login and consent pages), not a JSON\noperation — it is therefore documented here in prose only. The delegated token acts with\nthe permissions of the user who granted it.\n\nOAuth client registration: official and known integrations are pre-registered as OAuth\nclients. MCP hosts and other OAuth clients can self-onboard through Dynamic Client\nRegistration (`POST /oauth/register`); a `client_id` given as an HTTPS URL pointing to a\nclient metadata document (CIMD) is also accepted. Registration creates an **OAuth client\nidentity only** — it does not create a marketplace application, an installation, a business\ngrant, or any access to data; those still come from an install or from user consent.\n\n**`client_id` means two different things depending on the surface** — the word `client` is\noverloaded, so this contract keeps them apart:\n\n| Surface | Entity | Identifier |\n|---|---|---|\n| Resource API (`/clients`) | the person the business serves | `client_id` of a `/clients` resource |\n| OAuth (`/oauth/*`, `/.well-known/*`) | OAuth client registration | OAuth `client_id`, e.g. `altg_oauth_9c41` or a CIMD URL |\n| Marketplace / Developer Portal | the developer's application | application id — never sent on the wire in V3 |\n\nOAuth `client_id` is the standard field name from RFC 6749 and is not renamed; prose in the\nauthorization sections always says **OAuth client** when it means the protocol entity.\n\n## Restricted key (single-business integrations)\n\nFor a business integrating its own scripts, services, or an owned MCP server:\n\n1. A business administrator creates a **restricted key** in the Altegio cabinet, choosing\n   its scopes and expiry. The key value is shown exactly once.\n2. The key itself is the Bearer credential — there is **no token exchange**:\n   `Authorization: Bearer <restricted_key>`.\n3. Restricted keys use the same public scope catalog, minus credential-class exclusions\n   such as `team_members:manage_access` in the first iteration, and can be revoked in the\n   cabinet at any time.\n\n# Access model\n\nEvery request is resolved through the same runtime formula:\n\n```\neffective access = token scopes\n                 ∩ scopes granted to the installation / key\n                 ∩ business permissions of the token subject\n                 ∩ tenant (Location)\n```\n\n- A **scope opens an endpoint**; the subject's business permissions then decide which rows and\n  fields are visible or writable. Having a scope does not bypass the permission system of\n  the business.\n- **Location binding:** resources live under `/api/v3/locations/{location_id}/...`; the\n  `location_id` in the route is checked against the credential. A foreign Location returns\n  `404` — existence is not leaked.\n- **Scopes are credential-class bounded.** A credential can use only scopes allowed for its\n  class. An installation (machine-to-machine) token acts with the permissions granted to the\n  installation; a user-delegated token acts with the permissions of that specific Business\n  User; a restricted key acts with the scopes and resource grants set on the key.\n- **No step-up in this preview.** Dangerous operations in this preview are protected by\n  explicit scopes, the subject's business permissions, idempotency, audit, and rate limits.\n  A future human-confirmation flow will be added only with a complete challenge contract.\n\n# Conventions\n\n- **Resource shape:** a flat JSON object with integer `id`, a string `object` type marker,\n  and domain fields. No envelopes, no prefixes on ids.\n- **List shape:** `{\"object\": \"list\", \"data\": [...], \"has_more\": false, \"next_cursor\": null}`.\n  Pagination is cursor-based: pass `limit` and the `next_cursor` value from the previous\n  page as `cursor`. Cursors are opaque, expire, and only work for the credential and filter\n  set that produced them. Page/offset pagination does not exist in V3.\n- **Field naming:** all JSON fields, query parameters, and path segments are `snake_case`;\n  `operationId` values are `lowerCamelCase`.\n- **Dates and times:** RFC 3339 everywhere.\n  - Audit instants (`created_at`, `updated_at`, `cancelled_at`) are UTC: `2026-07-14T09:20:31Z`.\n  - Appointment times (`starts_at`, `ends_at`) carry the Location's local UTC offset:\n    `2026-07-09T11:30:00+01:00`.\n  - Date-only values are `YYYY-MM-DD`; wall-clock times (working hours, schedule slots)\n    are `HH:MM` in the Location's timezone.\n  - Naive datetimes and Unix timestamps never appear.\n- **Money:** integer **minor units** of the Location currency (`1250` = one thousand two hundred fifty minor units). The\n  `currency` (ISO 4217) is server-controlled, read-only, and repeated in money-carrying\n  resources. Monetary field names use the `_minor` suffix. Floating-point amounts are rejected.\n- **Partial updates:** `PATCH` bodies are `application/merge-patch+json`. A missing field\n  means \"leave unchanged\"; `null` clears a nullable field; arrays are cleared with an\n  explicit `[]`, never `null`. Clearing a non-nullable field fails with `422\n  field_not_nullable`; writing a read-only field fails with `422 field_immutable`. Unknown\n  request fields are rejected; unknown response fields must be ignored by clients.\n- **`expand[]`:** related objects are returned as ids by default. Documented relations can\n  be expanded one level deep with `expand[]=<relation>` (allowlist per endpoint, depth 1).\n  An unknown expand value fails with `422`. Expansion never bypasses field-level\n  permissions — see PII below.\n\n# Errors\n\nEvery error from a resource operation is `application/problem+json` (RFC 9457 hybrid):\n\n| Field | Meaning |\n|---|---|\n| `type` | Stable URL identifying the problem type (links to documentation). |\n| `title` | Human-readable summary of the problem type. |\n| `status` | HTTP status code. |\n| `detail` | Human-readable explanation of this occurrence. |\n| `code` | **Stable machine-readable code** — branch on this, never on text. |\n| `errors[]` | Field-level issues: `code`, `source`, `pointer`, `message`. `pointer` is a JSON Pointer for body errors and a parameter name for query/path/header errors. |\n| `instance` | Request identifier for support and log correlation. Same value as the `X-Request-Id` header of that response, so quoting either one is enough. |\n\nThe OAuth protocol and discovery endpoints are the one exception: `POST /oauth/token`,\n`POST /oauth/revoke`, `POST /oauth/register` and `/.well-known/*` return the standard OAuth 2.0\nerror object (`{\"error\": \"…\", \"error_description\": \"…\"}`) defined by RFC 6749, 7009 and 7591 —\nnot `application/problem+json`. The `GET /oauth/authorize` browser flow reports errors on its\nown HTML page or as OAuth error parameters on the redirect, never as JSON. `GET\n/oauth/accessible-resources` is the opposite case: despite the path it is an ordinary\nBearer-authed read and uses `application/problem+json` like the rest of the API.\n\nEverything else in this section (stable codes, field-level `errors[]`, request correlation)\ndescribes resource operations. Rate limiting is the one rule both surfaces share: every `429`\ncarries `Retry-After`.\n\nTwo conventions keep this table stable:\n\n- **Promotion.** Only public machine-readable codes that clients are expected to branch on\n  enter this table. Adding a code means editing this table and registering it in the biz.erp\n  `V3ProblemCatalog` in the same cycle — the CI conformance gate keeps both sides in sync.\n  Internal exceptions are never promoted implicitly: an unregistered code degrades to the\n  generic status default and nothing internal leaks.\n- **Naming.** `invalid_*` means the supplied value does not exist or fails validation\n  (`invalid_token`, `invalid_city`, `invalid_business_type`); `unsupported_*` means the value\n  is valid but not supported by the product or policy (`unsupported_country`,\n  `unsupported_media_type`, `unsupported_token_subject`).\n\nStable codes used by this preview (branch on these; domain codes below are equally stable):\n\n| Code | HTTP | When |\n|---|---:|---|\n| `bad_request` | 400 | Generic client reject without a more specific registered code (status default for bare 400 and unknown 4xx). Does **not** mean broken JSON. |\n| `malformed_request` | 400 | Protocol-only: broken JSON / unparseable body / wire-format syntax. Thrown explicitly — never the catch-all for every 400. |\n| `invalid_token` | 401 | Missing, expired, or revoked token. |\n| `missing_scope` | 403 | The token does not carry the required scope. |\n| `permission_denied` | 403 | Scope present, but the subject lacks the business permission. |\n| `user_not_verified` | 403 | Location create blocked: the user account is not verified. |\n| `location_creation_forbidden` | 403 | Location create is not allowed for this subject. |\n| `unsupported_token_subject` | 403 | This credential class cannot perform the operation (e.g. installation token on `locations:create`). |\n| `resource_not_found` | 404 | Generic 404 fallback: unknown `/api/v3/*` path, gate/FF hide, or tenant policy without a safe resource-specific code. |\n| `{resource}_not_found` | 404 | Resource absent or hidden by tenant policy (e.g. `appointment_not_found`, `location_not_found`). |\n| `method_not_allowed` | 405 | HTTP method is not supported on an existing v3 route. Emitted by routing before any operation is selected, so it is deliberately not declared per operation; the body is the same `Problem` shape as every other error. The response carries `Allow` with the methods the route does accept, e.g. `Allow: GET`. |\n| `not_acceptable` | 406 | `Accept` cannot be satisfied. |\n| `conflict` | 409 | Generic 409 fallback when the domain exception has no more specific registered code. |\n| `slot_taken` | 409 | Appointment create lost the race for the requested time slot. |\n| `idempotency_key_reused` | 409 | Same `Idempotency-Key` with a different request body. |\n| `idempotency_request_in_progress` | 409 | Same key while the first request is still running (`Retry-After` included). |\n| `duplicate_location` | 409 | Location create conflicts with an existing Location. |\n| `last_location_owner` | 409 | Cannot revoke the last owner of the Location. |\n| `invitation_already_pending` | 409 | A distinct pending invitation already exists. |\n| `access_already_active` | 409 | Team Member already has active system access. |\n| `visit_already_settled` | 409 | Visit is fully paid; adding a line would leave an unpaid remainder. |\n| `stale_version` | 412 | `If-Match` did not match — the resource was changed by another writer. |\n| `unsupported_media_type` | 415 | Request `Content-Type` is not supported. |\n| `validation_failed` | 422 | Semantic field validation failed (details in `errors[]`). |\n| `phone_taken` | 422 | Client phone already belongs to another client of the Location (under `clients:write`; audited and rate-limited). |\n| `exceeds_unpaid` | 422 | Payment amount exceeds the visit's unpaid remainder. |\n| `immutable_after_finance` | 422 | Country/currency cannot change after financial data exists. |\n| `field_not_nullable` | 422 | Merge-patch tried to `null` a non-nullable field. |\n| `field_immutable` | 422 | Merge-patch tried to change a read-only field. |\n| `role_not_assignable` | 422 | Requested access role is not assignable in this Location. |\n| `invitation_contact_required` | 422 | Invitation delivery needs a contact and none is available. |\n| `invalid_city` | 422 | `city_id` is invalid for location create. |\n| `unsupported_country` | 422 | Country derived from city is not supported. |\n| `invalid_business_type` | 422 | `business_type_id` is invalid. |\n| `location_quota_exceeded` | 422 | Account location quota exceeded. |\n| `instrument_not_applicable` | 422 | Gift card / membership / loyalty instrument is not usable for this visit (unified; does not distinguish unknown vs wrong tenant). |\n| `precondition_required` | 428 | Required `If-Match` header is missing. |\n| `rate_limit_exceeded` | 429 | Rate limit hit (`Retry-After` included). |\n| `location_creation_rate_limited` | 429 | Location create rate limit hit. |\n| `internal_error` | 500 | Unexpected server error. |\n| `dependency_unavailable` | 503 | A required dependency is down; the write was not performed (fail closed). |\n\nField-level codes inside `errors[]` (not top-level `code`) include `expired_cursor`,\n`invalid_cursor`, `foreign_cursor`, and validation codes such as `invalid_datetime`.\n\nExample — validation failure (`422`):\n\n```json\n{\n  \"type\": \"https://developer.alteg.io/problems/validation-error\",\n  \"title\": \"Request validation failed\",\n  \"status\": 422,\n  \"detail\": \"One or more fields are invalid.\",\n  \"instance\": \"urn:altegio:request:req_abc123\",\n  \"code\": \"validation_failed\",\n  \"errors\": [\n    {\n      \"code\": \"invalid_datetime\",\n      \"source\": \"body\",\n      \"pointer\": \"/starts_at\",\n      \"message\": \"starts_at must be a valid RFC 3339 datetime.\"\n    }\n  ]\n}\n```\n\nExample — stale optimistic-concurrency version (`412`):\n\n```json\n{\n  \"type\": \"https://developer.alteg.io/problems/stale-version\",\n  \"title\": \"Resource version is stale\",\n  \"status\": 412,\n  \"detail\": \"The resource was modified after the version supplied in If-Match. Re-read it and retry.\",\n  \"instance\": \"urn:altegio:request:req_def456\",\n  \"code\": \"stale_version\"\n}\n```\n\nRetry guidance depends on the code, not on a generic flag: fix the request on `422`;\nre-read the resource on `412`; retry the same `Idempotency-Key` after `Retry-After` on\n`409 idempotency_request_in_progress`; back off on `429`/`503`; after a network timeout on\na create or command, retry **only with the same `Idempotency-Key`**.\n\n# Idempotency & concurrency\n\n**`Idempotency-Key`** is required on every `POST` create and command where a retry could\nduplicate a side effect (creating appointments, clients, payments; cancel/status commands;\nrefunds).\n\n- Generate a unique key per logical request (UUID recommended).\n- A retry with the same key and the same body returns the **original result** — including\n  the case where the first attempt committed but its response was lost.\n- The same key with a different body fails with `409 idempotency_key_reused`.\n- A concurrent duplicate fails with `409 idempotency_request_in_progress` and `Retry-After`.\n- Keys are retained for **at least 24 hours**, scoped to the credential, Location (when\n  present), and operation. After expiry the same key value may start a **new** logical\n  request (it is not `idempotency_key_reused`).\n- If the idempotency store is unavailable, the write is not performed: `503\n  dependency_unavailable`.\n\n**ETag / `If-Match`** protects mutable resources from two writers silently overwriting each\nother (for example, a human and an agent editing the same appointment):\n\n1. `GET` a mutable resource — the response carries an `ETag` header (creates and updates\n   return the fresh `ETag` too).\n2. Send `PATCH` or `DELETE` with `If-Match: <etag>`.\n3. On success the response carries the new `ETag`. If the resource changed in between, the\n   call fails with `412 stale_version` — re-read, reapply your change, retry. A missing\n   `If-Match` where it is required fails with `428 precondition_required`.\n\n# PII & redaction\n\nClient contact fields — `phone`, `email`, `additional_phone` — are sensitive:\n\n- Reading them requires the `clients:read_contact` scope **and** the corresponding business\n  permission of the token subject.\n- When access is refused, a contact field is returned as `null` and its name is listed in `redacted_fields` of the same object. It is never replaced with a mask, a placeholder or an empty string, so an integration cannot write a redacted value back.\n- `expand[]=client` follows the same rule: expanding a client on an appointment or visit\n  without contact access returns the client with redacted contact fields. Expansion never\n  widens access.\n- **`422 phone_taken` on create/update** is part of `clients:write` (no extra\n  `clients:read_contact`). It only signals that the phone is already owned by another\n  client of this Location — it does not return that client's identity or contact payload.\n  Phone-bearing writes are audited and share an anti-enumeration rate limit with exact\n  contact search so the existence signal cannot be bulk-probed.\n\n# HTTP negotiation and caching\n\nClients should send `Accept: application/json` for successful resource responses and `application/problem+json` for errors; unsupported response media types fail with `406 not_acceptable`. JSON is UTF-8; `Content-Type` may include `charset=utf-8`. Read operations may include `Cache-Control` appropriate to the resource (`no-store` for PII-bearing reads, short `private` or `public` max-age for dictionaries and metadata). Mutable resource reads return strong ETags suitable for `If-Match`; computed/list/read-model responses may use weak ETags only for cache validation and not for write preconditions. `If-Match: *` is not accepted on PATCH/DELETE in V3 preview; clients must re-read and send the concrete strong ETag.\n"}},"baseSlug":"/en/b2b-v3/openapi","routesMapping":{}}