{"items":[{"type":"link","label":"Lobbie Partner API","link":"/openapi","routeSlug":"/openapi","content":{"contentType":"overview","meta":{"name":"Lobbie Partner API"},"children":[{"nodeType":"container","panels":[{"title":"Download OpenAPI description","titleTranslationKey":"download.description.title","children":[{"kind":"download","label":"openapi.json","url":"/_bundle/openapi.json?download"},{"kind":"download","label":"openapi.yaml","url":"/_bundle/openapi.yaml?download"}]},{"title":"Overview","titleTranslationKey":"info.title","children":[{"kind":"email","title":"Lobbie API Team","email":"api-support@lobbie.com","label":"api-support@lobbie.com","withCopyButton":true,"copyContent":"api-support@lobbie.com"}]},{"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/openapi","description":"Mock server","isMockServer":true},{"description":"Production","url":"https://api-prod.lobbie.com/lobbie/api"}],"mode":"default"}]}],"children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"header","level":1,"label":"Lobbie Partner API (2.0)","showPageActions":true},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[]}],"sectionId":"/openapi"}],"sectionId":"/openapi"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/partner-api-overview"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partner API Overview"},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/partner-api-overview/authentication"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authentication"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The Partner API uses "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth 2.0 with AWS Cognito"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for secure machine-to-machine (M2M) authentication."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/authentication"}],"sectionId":"/openapi/section/partner-api-overview/authentication"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/prerequisites"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Prerequisites"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Before making API requests, you must complete the partner onboarding process:"},"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":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partner Registration"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Lobbie creates a partner integrator record with your unique "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"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":"Cognito Credentials"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Lobbie provides OAuth 2.0 client credentials (client ID and client secret)"},"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":"API Gateway Key"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Lobbie provides an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-api-key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value that identifies your integration for rate limiting (see "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"#rate-limits--quotas"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate Limits & Quotas"},"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":"Account Grants"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Lobbie grants your integration access to specific accounts"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"All three credentials ("},"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 "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-api-key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are shown "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"only once"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" at onboarding — store them securely. If any are lost or compromised, contact Lobbie support immediately."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/prerequisites"}],"sectionId":"/openapi/section/partner-api-overview/prerequisites"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/obtaining-an-access-token"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Obtaining an Access Token"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request an access token using the OAuth 2.0 client credentials by sending an HTTPS form POST. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Include the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-api-key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the token endpoint is gated by the same API key as the rest of the Partner API:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"POST https://api.lobbie.com/oauth2/token\nContent-Type: application/x-www-form-urlencoded\nx-api-key: <your_api_key>\n\ngrant_type=client_credentials&\nscope=prod-lobbie-api/partner-api&\nclient_id=<your_client_id>&\nclient_secret=<your_client_secret>\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"POST https://api.lobbie.com/oauth2/token\nContent-Type: application/x-www-form-urlencoded\nx-api-key: <your_api_key>\n\ngrant_type=client_credentials&\nscope=prod-lobbie-api/partner-api&\nclient_id=<your_client_id>&\nclient_secret=<your_client_secret>\n"},"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":"scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value is environment-prefixed. Use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"prod-lobbie-api/partner-api"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for production; Lobbie will provide the appropriate value for any non-production environment at onboarding."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The response contains a JWT access token:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n    \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n    \"token_type\": \"Bearer\",\n    \"expires_in\": 3600\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n    \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n    \"token_type\": \"Bearer\",\n    \"expires_in\": 3600\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"blockquote","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":"Cache this token."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Tokens are valid for 60 minutes and the token endpoint has a much tighter rate limit than the main API (see "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"#rate-limits--quotas"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate Limits & Quotas"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). A well-behaved integration fetches a token "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"once"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and reuses it until shortly before it expires."},"children":[]}]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/obtaining-an-access-token"}],"sectionId":"/openapi/section/partner-api-overview/obtaining-an-access-token"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/making-authenticated-requests"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Making Authenticated Requests"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every API request must include "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"both"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" headers: the OAuth Bearer token (which authenticates you) and the API key (which identifies you to the gateway for rate limiting):"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"Authorization: Bearer <access_token>\nx-api-key: <your_api_key>\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Authorization: Bearer <access_token>\nx-api-key: <your_api_key>\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Requests missing the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-api-key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header are rejected at the API Gateway edge with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"403 Forbidden"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" before reaching the application. Requests with an invalid or revoked key are similarly rejected."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/making-authenticated-requests"}],"sectionId":"/openapi/section/partner-api-overview/making-authenticated-requests"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/token-management"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token Management"},"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":"Access tokens expire after the duration specified in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expires_in"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (default: 60 minutes)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request a new token before the current one expires"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Store credentials securely—they grant access to protected health information (PHI)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If credentials are compromised, contact Lobbie support immediately to revoke and regenerate"},"children":[]}]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/token-management"}],"sectionId":"/openapi/section/partner-api-overview/token-management"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/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":"Your partner integration must have an active grant to access each account. The API validates:"},"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":"The JWT token is valid and not expired"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Your "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"client_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" corresponds to an active partner integrator"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Your integration has an active grant to the requested account"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The requested location belongs to the specified account"},"children":[]}]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/authorization"}],"sectionId":"/openapi/section/partner-api-overview/authorization"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/partner-api-overview/rate-limits-and-quotas"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate Limits & Quotas"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Limits are enforced per "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-api-key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Two separate limits apply depending on which endpoint you're calling:"},"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":"General API ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/lobbie/api/partner/v2/"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"*)"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — sustained rate limit "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"25 requests/second"},"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":"daily quota of 250,000 requests"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". We recommend targeting around "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"20 requests/second"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in steady-state to absorb natural timing variability."},"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":"Token endpoint ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/oauth2/token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — enforced at a much tighter per-partner rate than the rest of the API. A correctly-implemented integration fetches a token "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"once per hour"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and caches it until shortly before it expires; with that behavior you'll never approach the limit. If you're seeing 429s on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/oauth2/token"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", your client is refreshing tokens far more often than needed — add caching rather than asking for a higher limit. Token calls count against the same daily quota as 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":"The daily quota resets at 00:00 UTC. Exceeding either limit returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429 Too Many Requests"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with a JSON body and a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header. The two causes are distinguished by the machine-readable "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field — switch on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", don't parse the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" prose:"},"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":"code"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cause"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response body"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Expected back-off"},"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":"THROTTLED"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate too high"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"1"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{\"code\":\"THROTTLED\",\"message\":\"API rate limit exceeded. Retry after a short delay; throttle capacity refills within seconds.\"}"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Wait the second in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", then retry. Throttle capacity refills continuously."},"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":"QUOTA_EXCEEDED"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Daily quota exhausted"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"3600"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{\"code\":\"QUOTA_EXCEEDED\",\"message\":\"Daily request quota exhausted. The quota resets at 00:00 UTC.\"}"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Stop until the quota resets at "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"00:00 UTC"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is an hourly re-check hint, not the exact reset — retrying before 00:00 UTC keeps returning "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"QUOTA_EXCEEDED"},"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":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is expressed in seconds. Read "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to decide how to react: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"THROTTLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears within seconds, while "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"QUOTA_EXCEEDED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" does not clear until the daily reset — treat them as short-wait and stop-until-reset respectively."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If your integration consistently approaches these limits, contact Lobbie."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/rate-limits-and-quotas"}],"sectionId":"/openapi/section/partner-api-overview/rate-limits-and-quotas"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/partner-api-overview/common-errors"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Common Errors"},"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":"Status"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Error"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Description"},"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":"401"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unauthorized"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Invalid, expired, or missing access token"},"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":"403"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Forbidden"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Missing/invalid "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-api-key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or integration lacks access to the requested account or location"},"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":"404"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Not Found"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Resource not found or does not belong to the authorized account"},"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":"422"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unprocessable Entity"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Validation failed — see "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"error.fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for per-property details"},"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":"429"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Too Many Requests"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limit or daily quota exceeded (see "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"#rate-limits--quotas"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate Limits & Quotas"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]}]}]}]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/common-errors"}],"sectionId":"/openapi/section/partner-api-overview/common-errors"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/partner-api-overview/hipaa-and-compliance"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"HIPAA & Compliance"},"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":"All patient data is Protected Health Information (PHI)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Encrypt data at rest and in transit"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Maintain audit logs of all data access"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sign Business Associate Agreement (BAA) before production access"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Follow data retention policies per agreement"},"children":[]}]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/hipaa-and-compliance"}],"sectionId":"/openapi/section/partner-api-overview/hipaa-and-compliance"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/partner-api-overview/webhooks"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhooks"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lobbie can "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"POST JSON event payloads"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to an "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"HTTPS"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" URL you configure. Managing webhook endpoints (create, list, update, delete, discover event types, send a test delivery) uses the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partner API"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the same "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer token"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-api-key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"#making-authenticated-requests"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Making Authenticated Requests"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/webhooks"}],"sectionId":"/openapi/section/partner-api-overview/webhooks"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/registering-and-managing-endpoints"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Registering and managing endpoints"},"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":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"List subscribable event types"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /lobbie/api/partner/v2/webhook/event-types"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returns the event type strings you may use in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eventTypes"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when creating or updating an endpoint (alphabetical list; "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"source of truth"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as new types are added)."},"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":"Create an endpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /lobbie/api/partner/v2/webhook"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with a JSON body:"},"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":"url"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — must be "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"HTTPS"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with a public host (Lobbie validates the URL)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eventTypes"},"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":"non-empty"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" array; every value must appear in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET .../event-types"},"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":"code","inline":true,"attributes":{"content":"name"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — optional label."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"start":3,"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":"Signing secret"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — On "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"create"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" only, the response includes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"signingSecret"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Store it immediately; it 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":" returned on later GET/list responses."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"blockquote","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":"Treat "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"signingSecret"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" like a password."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" You need it to verify "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Lobbie-Signature"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on inbound POSTs. If it is lost, delete the endpoint and create a new one."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Read, update, list, delete, and test-send are documented under the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhooks"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" tag in OpenAPI (paths under "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/lobbie/api/partner/v2/webhook"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/registering-and-managing-endpoints"}],"sectionId":"/openapi/section/partner-api-overview/registering-and-managing-endpoints"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/supported-event-types"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supported event types"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When creating or updating an endpoint, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eventTypes"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" must contain one or more of the following subscribable event types. The same list is returned alphabetically by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /lobbie/api/partner/v2/webhook/event-types"},"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":"source of truth"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as new types are added)."},"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":"Event type"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Description"},"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":"appointment.created"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A new appointment was created"},"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.updated"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An existing appointment was updated"},"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.deleted"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An appointment was deleted"},"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":"patient.created"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A new patient was created"},"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":"patient.updated"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An existing patient was updated"},"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":"patient.deleted"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A patient was deleted"},"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":"form-packet.created"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A new form packet was created"},"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":"form-packet.updated"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An existing form packet was updated"},"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.created"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A successful charge was recorded (not emitted by all accounts — see "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"#payment-events"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Payment events"},"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":"payment-attempt.created"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A payment attempt was first recorded (see "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"#payment-events"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Payment events"},"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":"payment-attempt.updated"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A payment attempt's state changed (see "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"#payment-events"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Payment events"},"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":"subscription.created"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A subscription was created (see "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"#subscription-events"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Subscription events"},"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":"subscription.updated"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A subscription changed, including cancellation (see "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"#subscription-events"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Subscription events"},"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":"test.ping"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is used only for test deliveries ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST .../webhook/{webhookId}/test"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); it 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":" subscribable and 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":" appear in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET .../event-types"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/supported-event-types"}],"sectionId":"/openapi/section/partner-api-overview/supported-event-types"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/test-delivery"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Test delivery"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /lobbie/api/partner/v2/webhook/{webhookId}/test"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" triggers an "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"immediate outbound POST"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to your configured URL so you can validate connectivity, timeouts, and signature verification. The event type for this delivery is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"test.ping"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; it 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":" included in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET .../event-types"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and 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":" something you subscribe to."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The request body requires an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"accountId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" you've been granted access to. Webhook endpoints are integrator-scoped and serve every account you're granted, so there is no implicit account to test under — you name one explicitly. The value is published verbatim as the delivery envelope's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"accountId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", exactly as it would be on a real event. A request naming an account you can't access returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/test-delivery"}],"sectionId":"/openapi/section/partner-api-overview/test-delivery"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/inbound-delivery-(your-server)"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Inbound delivery (your server)"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lobbie delivers events with:"},"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":"Aspect"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Value"},"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":"Method"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST"},"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":"Content-Type"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/json"},"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":"Body"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UTF-8 JSON (see below)"},"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":"Headers you should read:"},"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":"Header"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Purpose"},"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":"Lobbie-Signature"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"t=<unix_seconds>,v1=<hex_hmac_sha256>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (see "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"#verifying-signatures"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Verifying signatures"},"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":"Lobbie-Webhook-Event-Id"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unique id for the event (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"evt_..."},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); use for idempotency / deduplication"},"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":"Lobbie-Webhook-Event-Type"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For the test endpoint: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"test.ping"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Otherwise matches your subscription (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment.created"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]}]}]}]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/inbound-delivery-(your-server)"}],"sectionId":"/openapi/section/partner-api-overview/inbound-delivery-(your-server)"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/request-body-shape"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request body shape"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The JSON body is an envelope plus an event-specific "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" object:"},"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":"Description"},"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":"version"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Payload format version (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"1"},"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":"eventId"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Same id as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Lobbie-Webhook-Event-Id"},"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":"eventType"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Same string as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Lobbie-Webhook-Event-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":"accountId"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lobbie account the event source belongs to. Stable for the lifetime of the event and present on every delivery — use it to route incoming events without joining on fields inside "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". For "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"test.ping"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" there is no source entity, so this is the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"accountId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" you supplied in the test request."},"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":"environment"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lobbie deployment identifier"},"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":"occurredAt"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When the event occurred (ISO-8601 instant)"},"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":"sentAt"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When this delivery was sent (ISO-8601 instant)"},"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":"deliveryAttempt"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Attempt number for this delivery (starts at "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; increments if Lobbie retries)"},"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":"data"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Event payload (always a JSON object); see below"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example (illustrative shape only):"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"version\": \"1\",\n  \"eventId\": \"evt_550e8400-e29b-41d4-a716-446655440000\",\n  \"eventType\": \"appointment.created\",\n  \"accountId\": 12345,\n  \"environment\": \"prod\",\n  \"occurredAt\": \"2025-03-15T14:30:00Z\",\n  \"sentAt\": \"2025-03-15T14:30:01Z\",\n  \"deliveryAttempt\": 1,\n  \"data\": {}\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"version\": \"1\",\n  \"eventId\": \"evt_550e8400-e29b-41d4-a716-446655440000\",\n  \"eventType\": \"appointment.created\",\n  \"accountId\": 12345,\n  \"environment\": \"prod\",\n  \"occurredAt\": \"2025-03-15T14:30:00Z\",\n  \"sentAt\": \"2025-03-15T14:30:01Z\",\n  \"deliveryAttempt\": 1,\n  \"data\": {}\n}\n"},"children":[]}]},{"$$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":"The envelope above is published as the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"WebhookEnvelope"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" schema under "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"components.schemas"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in this OpenAPI document — generate it alongside the REST models to get typed inbound webhook handlers."},"children":[]}]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/request-body-shape"}],"sectionId":"/openapi/section/partner-api-overview/request-body-shape"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/event"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Event "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and REST responses"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For domain events, the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" object uses the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same JSON structure"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as the corresponding Partner API "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"success response body"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"—you can reuse the same models and OpenAPI schemas you already use for REST."},"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":"Example — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment.created"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":":"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is an "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Appointment"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" object with the same fields and types as the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"200 OK"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body of:"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /lobbie/api/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Refer to the OpenAPI document for that operation’s response schema."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"test.ping"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (test send only), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a small object with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"endpointId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/event"}],"sectionId":"/openapi/section/partner-api-overview/event"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/payment-events"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Payment events"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lobbie emits three payment-related event types. Pick subscriptions based on what you need to do."},"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":"Event type"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When it fires"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" shape"},"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":"payment.created"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Once per successful charge — "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"emitted only for accounts on Lobbie's current payments platform; some accounts never emit it"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Where present, an authoritative signal that money moved."},"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":" (same as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET .../payments/{paymentId}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" 200 OK 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":"payment-attempt.created"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When a payment attempt is first recorded, before submission. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is typically "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PENDING"},"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":"code","inline":true,"attributes":{"content":"PaymentAttempt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET .../payment-attempts/{paymentAttemptId}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" 200 OK 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":"payment-attempt.updated"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When a payment attempt's state changes, including the transition to a terminal status ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCEEDED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELED"},"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":"code","inline":true,"attributes":{"content":"PaymentAttempt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":".created"},"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":"Subscription guidance:"},"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":"For billing integrations"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (record-of-truth that a charge succeeded): subscribe to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment-attempt.updated"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and treat "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status == SUCCEEDED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as the success signal. This is the only success signal emitted by "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"every"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" account, so it is the reliable choice for billing."},"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":"For failure handling"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (retry workflows, patient notifications, dunning): subscribe to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment-attempt.updated"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and filter on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status == FAILED"},"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":"code","inline":true,"attributes":{"content":"payment.created"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is an optional convenience"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for accounts that emit it (fires once per successful charge). Not all accounts do, so do not rely on it as a universal success signal. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Do not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" use both it and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment-attempt.updated"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCEEDED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") as billing triggers for the same account — that double-counts every successful charge. Pick one."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every successful payment emits "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment-attempt.created"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment-attempt.updated"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (with a terminal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); accounts on Lobbie's current payments platform additionally emit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment.created"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". These events may be observed in any order — dedupe retries by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eventId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", reconcile by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"occurredAt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and re-read the resource via the corresponding "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" endpoint when you need an authoritative current state."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/payment-events"}],"sectionId":"/openapi/section/partner-api-overview/payment-events"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/subscription-events"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Subscription events"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lobbie emits two subscription event types, for "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"every"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" account regardless of payments platform."},"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":"Event type"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When it fires"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" shape"},"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":"subscription.created"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When a subscription is created."},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Subscription"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET .../subscription/{subscriptionId}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" 200 OK 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":"subscription.updated"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When any field of a subscription changes — status, payment method, terms, or a next-billing-date advance."},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Subscription"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (same shape as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":".created"},"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":"Subscription guidance:"},"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":"Cancellation is a status transition, not a delete."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" A cancelled subscription is delivered as a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"subscription.updated"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" whose "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data.status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". There is no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"subscription.deleted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" event."},"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":"subscription.updated"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" fires on any change"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not only status transitions. To detect a transition (such as active → cancelled), compare "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data.status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" against the last value you recorded for that subscription — the same pattern used for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"payment-attempt.updated"},"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":"code","inline":true,"attributes":{"content":"data.status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses the unified vocabulary documented on the Subscription resource ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DRAFT"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ACTIVE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PENDING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PAUSED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"VOID"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), identical to what the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET .../subscription"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" endpoints return for the same account. On some accounts an overdue or failing-payment subscription is surfaced as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ACTIVE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" until it is cancelled or completes — the webhook matches the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" endpoint in this respect."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"These events may be observed in any order — dedupe retries by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eventId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", reconcile by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"occurredAt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and re-read the subscription via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when you need an authoritative current state."},"children":[]}]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/subscription-events"}],"sectionId":"/openapi/section/partner-api-overview/subscription-events"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/verifying-signatures"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Verifying signatures"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Each inbound POST is signed with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"HMAC-SHA256"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using your endpoint's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"signingSecret"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (UTF-8 bytes of the string as the HMAC key)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Parse the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Lobbie-Signature"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header. It uses the form "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"t=<unix_seconds>,v1=<hex_hmac_sha256>"},"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":"Compute "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"HMAC-SHA256"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" over the literal bytes: UTF-8 encoding of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"t"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as a decimal digit string, then ASCII "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"0x2E"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), then the raw HTTP request body bytes."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Compare your digest to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"v1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" using a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"constant-time"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" equality check (compare the decoded digest bytes, not string shortcuts on secrets)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On retries, Lobbie may send a new JSON body: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sentAt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"deliveryAttempt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"t"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Lobbie-Signature"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" change to match that attempt. Verify each POST with that request's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"t"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and raw body bytes — do not reuse an HMAC you computed for an earlier delivery."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/verifying-signatures"}],"sectionId":"/openapi/section/partner-api-overview/verifying-signatures"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/acknowledging-delivery"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Acknowledging delivery"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"After you accept the payload, respond with "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"any HTTP status in the 2xx range"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" so Lobbie records a successful delivery."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/acknowledging-delivery"}],"sectionId":"/openapi/section/partner-api-overview/acknowledging-delivery"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/retries"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retries"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lobbie will re-send a failed or timed-out request with exponential backoff between attempts after each failure: approximately "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"2 minutes"},"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":"4 minutes"},"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":"8 minutes"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", then "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"15 minutes"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". After "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"5 total attempts"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the first attempt plus four retries), the delivery is treated as failed and no further retries are made — total recovery window is roughly "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"half an hour"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"deliveryAttempt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field in the JSON body indicates which attempt you are handling (1-indexed). Each retry is a new request with an updated body and signature (see "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"#verifying-signatures"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Verifying signatures"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]}],"sectionId":"/openapi/section/partner-api-overview/retries"}],"sectionId":"/openapi/section/partner-api-overview/retries"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/partner-api-overview/delivery-guarantees"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Delivery guarantees"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Design your handler around these guarantees. They are intrinsic to how delivery works and will not change without a versioned, announced change."},"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":"At-least-once delivery once an event is accepted for delivery."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Once an event has been accepted onto the delivery queue, it will be attempted at least once and may arrive more than once (e.g. a retry after your server accepted the request but the response was lost). "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Deduplicate by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eventId"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Lobbie-Webhook-Event-Id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") and make your handler idempotent. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eventId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"occurredAt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are stable across every retry of the same event; only "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sentAt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"deliveryAttempt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and the signature "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"t"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" change per attempt. Note that acceptance onto the delivery queue happens after the originating database transaction commits and is best-effort; in the rare case the queue is unreachable at that moment the event may not be delivered. Lobbie alerts internally on those failures."},"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 ordering guarantee."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Events are delivered over an unordered queue. Do not assume that delivery order matches the order changes occurred — even for the same entity. Order and reconcile on your side using "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"occurredAt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eventId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to dedupe). For example, an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment.updated"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" may arrive before the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment.created"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for the same appointment."},"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 backfill for endpoints registered after an event occurs."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Subscriptions are evaluated at the moment the entity changes, not at delivery time. An endpoint created (or a newly added event-type subscription) after a change occurred will "},"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":" receive that earlier event. There is no replay; only changes that happen after the subscription exists are delivered."},"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":"Delete events carry metadata only."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" For deletion events the entity no longer exists by delivery time, so the payload's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" contains identity only — the entity type and its id — and "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no entity body"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The envelope ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eventId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"occurredAt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eventType"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") still applies. Use the prior "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"created"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"/"},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" events (deduplicated by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eventId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") if you need the last-known state of a deleted entity."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/openapi/section/partner-api-overview/delivery-guarantees"}],"sectionId":"/openapi/section/partner-api-overview/delivery-guarantees"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/terminology"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Terminology"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This glossary defines domain-specific terms used throughout the Lobbie Partner API."},"children":[]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/openapi/section/terminology"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/terminology/core-entities"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Core Entities"},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/core-entities"}],"sectionId":"/openapi/section/terminology/core-entities"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/account"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Account"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A healthcare practice or organization using Lobbie. Each account contains practice-wide settings and configurations, and can have multiple locations. All API access is scoped to a specific account via OAuth tokens."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/account"}],"sectionId":"/openapi/section/terminology/account"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/location"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Location"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A physical practice site, clinic, or virtual care location within an account. Locations have their own addresses, staff assignments, schedules, and operational settings. Appointments, forms, and many operations are location-scoped. Each location has timezone information critical for accurate scheduling. Locations may have an optional "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"storeId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" that partners can use to correlate Lobbie locations with their own systems."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/location"}],"sectionId":"/openapi/section/terminology/location"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/patient"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Patient"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An individual receiving healthcare services from a specific account. Contains demographic information (name, date of birth) and contact details (email, phone). Serves as the central entity linking appointments, forms, invoices, and clinical data. Subject to HIPAA privacy requirements."},"children":[]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/openapi/section/terminology/patient"}],"sectionId":"/openapi/section/terminology/patient"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/terminology/scheduling"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Scheduling"},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/scheduling"}],"sectionId":"/openapi/section/terminology/scheduling"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/appointment"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Appointment"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A scheduled visit between a patient and practitioner at a specific location and time. Appointments track the complete visit lifecycle from initial scheduling through check-in, the visit itself, and completion or cancellation. Each appointment links to an appointment type, patient, practitioner, and location."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/appointment"}],"sectionId":"/openapi/section/terminology/appointment"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/appointment-type"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Appointment Type"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A template defining a schedulable service, including duration, telehealth settings, display color, and patient-facing description/instructions. Examples: \"New Patient Consultation\" (30 min), \"Follow-up Visit\" (15 min), \"Telehealth Checkup\" (20 min). Appointment types determine what services patients can book and how long they're scheduled."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/appointment-type"}],"sectionId":"/openapi/section/terminology/appointment-type"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/practitioner"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Practitioner"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A staff member designated as a clinical provider who can see patients and be scheduled for appointments. Practitioners have credentials (MD, DO, NP, PA, RN), NPI numbers, specialties, and license information. All practitioners are staff members, but not all staff are practitioners."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/practitioner"}],"sectionId":"/openapi/section/terminology/practitioner"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/self-scheduling"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Self-Scheduling"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Patient-initiated appointment booking through embeddable widgets or API integration. Self-scheduling respects practice availability rules, appointment type configurations, and booking windows. Patients can browse available times and complete bookings without staff intervention."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/self-scheduling"}],"sectionId":"/openapi/section/terminology/self-scheduling"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/self-scheduling-attempt"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Self-Scheduling Attempt"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A record of a patient's journey through the self-scheduling process, from initiation to completion or abandonment. Captures step-by-step progress for conversion analysis, identifying drop-off points, and triggering follow-up workflows for incomplete attempts."},"children":[]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/openapi/section/terminology/self-scheduling-attempt"}],"sectionId":"/openapi/section/terminology/self-scheduling-attempt"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/terminology/staff-and-access"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Staff & Access"},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/staff-and-access"}],"sectionId":"/openapi/section/terminology/staff-and-access"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/staff-member"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Staff Member"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Any team member with system access, including administrative staff, clinical support, and practitioners. Staff have role assignments determining their permissions and location access."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/staff-member"}],"sectionId":"/openapi/section/terminology/staff-member"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/role-group"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Role Group"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A permission set defining capabilities and access levels for staff members. Role groups control what actions staff can perform within the system, from standard user access to full administrative privileges. Staff members can have multiple role groups assigned, combining permissions as needed."},"children":[]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/openapi/section/terminology/role-group"}],"sectionId":"/openapi/section/terminology/role-group"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/terminology/forms-and-documentation"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Forms & Documentation"},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/forms-and-documentation"}],"sectionId":"/openapi/section/terminology/forms-and-documentation"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/form-template"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Form Template"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A reusable form design defining structure, fields, validation rules, and conditional logic. Templates are created once and used to generate form instances for patients. Form templates support versioning—when a template is modified, a new version is created while preserving previous versions for historical form submissions. Examples: \"Patient Intake Form\", \"HIPAA Consent\", \"Medical History Questionnaire\"."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/form-template"}],"sectionId":"/openapi/section/terminology/form-template"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/form-group"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Form Group"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A collection of one or more form instances assigned to a patient for completion. Form groups track overall completion status and can include multiple related forms. A form group is considered complete when all forms within it have been submitted, and can be archived when no longer needed."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/form-group"}],"sectionId":"/openapi/section/terminology/form-group"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/form"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Form"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An individual form instance within a form group, based on a form template version. Each form tracks its own completion status and contains the patient's responses."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/form"}],"sectionId":"/openapi/section/terminology/form"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/form-element"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Form Element"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A single field or component within a form template that captures patient input or displays content. Element types include: text inputs, text areas, dropdowns, checkboxes, radio buttons, date pickers, signatures, initials, file uploads, phone numbers, email addresses, addresses, and specialized types like payment fields and body diagrams. Elements can be configured as required or optional, and can have visibility rules controlling who can view or edit them (patient only, staff only, or both)."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/form-element"}],"sectionId":"/openapi/section/terminology/form-element"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/form-answer"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Form Answer"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A patient's response to a specific form element. Answers are stored per element and can be text, selections, dates, signatures, or file uploads depending on the element type."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/form-answer"}],"sectionId":"/openapi/section/terminology/form-answer"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/form-template-group"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Form Template Group"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A predefined collection of form templates commonly assigned together. Simplifies assigning multiple related forms in a single operation (e.g., \"New Patient Packet\" containing intake, consent, and history forms)."},"children":[]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/openapi/section/terminology/form-template-group"}],"sectionId":"/openapi/section/terminology/form-template-group"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/terminology/billing-and-payments"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Billing & Payments"},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/billing-and-payments"}],"sectionId":"/openapi/section/terminology/billing-and-payments"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/invoice"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Invoice"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An itemized billing statement for a patient detailing charges for services, products, taxes, and fees. Invoices progress through a lifecycle from creation to payment or cancellation. Invoices can be linked to appointments or created independently."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/invoice"}],"sectionId":"/openapi/section/terminology/invoice"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/invoice-line-item"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Invoice Line Item"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A single charge entry within an invoice. Line items specify quantity, unit price, and description, and can represent services, products, adjustments, or taxes. May reference billing codes and associated care resources."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/invoice-line-item"}],"sectionId":"/openapi/section/terminology/invoice-line-item"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/payment-request"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Payment Request"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A trackable record of a payment’s lifecycle, from initiation to final settlement. Each request tracks its status from creation through payment or expiration, whether triggered as a remote request sent to a patient (via email or SMS) or entered directly by staff for immediate processing."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/payment-request"}],"sectionId":"/openapi/section/terminology/payment-request"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/recurring-payment"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Recurring Payment"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An automated payment plan with scheduled charges at defined intervals. Used for payment plans, memberships, and subscription services. Configured with a frequency (weekly, monthly, etc.), amount, linked payment method, and optional end date."},"children":[]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/openapi/section/terminology/recurring-payment"}],"sectionId":"/openapi/section/terminology/recurring-payment"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/terminology/labs-and-clinical"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Labs & Clinical"},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/labs-and-clinical"}],"sectionId":"/openapi/section/terminology/labs-and-clinical"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/lab"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lab"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A laboratory order containing one or more test panels with results. Labs track progress from order placement through result delivery. Labs can be in-house or from external vendors and link to patients and optionally appointments."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/lab"}],"sectionId":"/openapi/section/terminology/lab"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/test-panel"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Test Panel"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A grouping of related lab tests within a lab order. Examples: \"Comprehensive Metabolic Panel\", \"Complete Blood Count\", \"Lipid Panel\". Each panel contains multiple test components."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/test-panel"}],"sectionId":"/openapi/section/terminology/test-panel"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/test-component"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Test Component"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An individual lab measurement within a test panel. Contains the test name, result value, unit of measurement, reference range, and an indicator of whether the result is normal or abnormal."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/test-component"}],"sectionId":"/openapi/section/terminology/test-component"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/health-profile"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Health Profile"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Structured patient health information including medical history, allergies, medications, and clinical data collected through intake forms and clinical encounters."},"children":[]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/openapi/section/terminology/health-profile"}],"sectionId":"/openapi/section/terminology/health-profile"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/terminology/patient-management"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Patient Management"},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/patient-management"}],"sectionId":"/openapi/section/terminology/patient-management"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/category"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Category"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A service category that can function as either a CRM-tracked sales pipeline or a simple organizational tag. When CRM-tracked, categories enable full pipeline tracking through status stages with dashboard visibility. When not CRM-tracked, categories function as simple groupings for billing, inventory, or reporting. Examples of CRM categories: \"Men's Health - Testosterone\", \"Weight Loss - Semaglutide\". Examples of simple categories: \"Lab Supplies\", \"Office Visits\"."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/category"}],"sectionId":"/openapi/section/terminology/category"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/patient-category"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Patient Category"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A patient's enrollment in a specific service category with CRM status tracking. Represents the link between a patient and a category, tracking their progress through the associated CRM pipeline. Appears as an \"Opportunity\" in CRM dashboards. Tracks status transitions with a complete audit trail."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/patient-category"}],"sectionId":"/openapi/section/terminology/patient-category"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/crm-status-group"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"CRM Status Group"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A reusable CRM workflow pipeline (sales/marketing funnel) that defines the customer journey stages. Think of it as the sales funnel template—the workflow (HOW you sell) is separated from the product (WHAT you sell). Multiple categories often share the same sales process. Examples: \"Digital Marketing Funnel\" with stages like Cold Lead → Engaged → Sales Qualified → Closed Won; \"Patient Care Journey\" with stages like Intake → Insurance Verified → In Treatment → Complete."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/crm-status-group"}],"sectionId":"/openapi/section/terminology/crm-status-group"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/crm-status"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"CRM Status"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An individual stage within a CRM status group representing where a patient is in a workflow. Status progression is tracked through transitions, providing a complete audit trail. Examples: \"Cold Lead\", \"Sales Qualified\", \"Proposal Sent\", \"Closed Won\", \"Closed Lost\"."},"children":[]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/openapi/section/terminology/crm-status"}],"sectionId":"/openapi/section/terminology/crm-status"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/terminology/communications"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Communications"},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/communications"}],"sectionId":"/openapi/section/terminology/communications"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/notification"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Notification"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A system-generated message sent to a patient via email or SMS. Notifications are sent for various purposes including appointment reminders, form assignments, payment requests, and account recovery. Each notification tracks its delivery status."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/notification"}],"sectionId":"/openapi/section/terminology/notification"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/notification-group"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Notification Group"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Configuration defining how and when patients receive specific types of communications, customizable per location or appointment type."},"children":[]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/openapi/section/terminology/notification-group"}],"sectionId":"/openapi/section/terminology/notification-group"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/terminology/identity-and-security"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identity & Security"},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/identity-and-security"}],"sectionId":"/openapi/section/terminology/identity-and-security"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/identity-proof"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identity Proof"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A verification session for authenticating patient identity through email and/or SMS code verification. Used for patient portal authentication, self-scheduling verification, and secure access to patient data. Each session generates a secure token and tracks which contact methods have been verified."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/identity-proof"}],"sectionId":"/openapi/section/terminology/identity-proof"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/terminology/verification-method"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Verification Method"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The channel(s) required to prove identity, which can be email only, SMS only, or both. The verification method determines what must be verified before the identity proof is considered complete."},"children":[]}]}]}]}],"sectionId":"/openapi/section/terminology/verification-method"}],"sectionId":"/openapi/section/terminology/verification-method"}]}]}},{"type":"group","label":"Partner API Overview","link":"/openapi/section/partner-api-overview","routeSlug":"/openapi/section/partner-api-overview","items":[{"type":"link","label":"Authentication","link":"/openapi/section/partner-api-overview/authentication","routeSlug":"/openapi/section/partner-api-overview/authentication","content":null},{"type":"link","label":"Prerequisites","link":"/openapi/section/partner-api-overview/prerequisites","routeSlug":"/openapi/section/partner-api-overview/prerequisites","content":null},{"type":"link","label":"Obtaining an Access Token","link":"/openapi/section/partner-api-overview/obtaining-an-access-token","routeSlug":"/openapi/section/partner-api-overview/obtaining-an-access-token","content":null},{"type":"link","label":"Making Authenticated Requests","link":"/openapi/section/partner-api-overview/making-authenticated-requests","routeSlug":"/openapi/section/partner-api-overview/making-authenticated-requests","content":null},{"type":"link","label":"Token Management","link":"/openapi/section/partner-api-overview/token-management","routeSlug":"/openapi/section/partner-api-overview/token-management","content":null},{"type":"link","label":"Authorization","link":"/openapi/section/partner-api-overview/authorization","routeSlug":"/openapi/section/partner-api-overview/authorization","content":null},{"type":"link","label":"Rate Limits & Quotas","link":"/openapi/section/partner-api-overview/rate-limits-and-quotas","routeSlug":"/openapi/section/partner-api-overview/rate-limits-and-quotas","content":null},{"type":"link","label":"Common Errors","link":"/openapi/section/partner-api-overview/common-errors","routeSlug":"/openapi/section/partner-api-overview/common-errors","content":null},{"type":"link","label":"HIPAA & Compliance","link":"/openapi/section/partner-api-overview/hipaa-and-compliance","routeSlug":"/openapi/section/partner-api-overview/hipaa-and-compliance","content":null},{"type":"link","label":"Webhooks","link":"/openapi/section/partner-api-overview/webhooks","routeSlug":"/openapi/section/partner-api-overview/webhooks","content":null},{"type":"link","label":"Registering and managing endpoints","link":"/openapi/section/partner-api-overview/registering-and-managing-endpoints","routeSlug":"/openapi/section/partner-api-overview/registering-and-managing-endpoints","content":null},{"type":"link","label":"Supported event types","link":"/openapi/section/partner-api-overview/supported-event-types","routeSlug":"/openapi/section/partner-api-overview/supported-event-types","content":null},{"type":"link","label":"Test delivery","link":"/openapi/section/partner-api-overview/test-delivery","routeSlug":"/openapi/section/partner-api-overview/test-delivery","content":null},{"type":"link","label":"Inbound delivery (your server)","link":"/openapi/section/partner-api-overview/inbound-delivery-(your-server)","routeSlug":"/openapi/section/partner-api-overview/inbound-delivery-(your-server)","content":null},{"type":"link","label":"Request body shape","link":"/openapi/section/partner-api-overview/request-body-shape","routeSlug":"/openapi/section/partner-api-overview/request-body-shape","content":null},{"type":"link","label":"Event ","link":"/openapi/section/partner-api-overview/event","routeSlug":"/openapi/section/partner-api-overview/event","content":null},{"type":"link","label":"Payment events","link":"/openapi/section/partner-api-overview/payment-events","routeSlug":"/openapi/section/partner-api-overview/payment-events","content":null},{"type":"link","label":"Subscription events","link":"/openapi/section/partner-api-overview/subscription-events","routeSlug":"/openapi/section/partner-api-overview/subscription-events","content":null},{"type":"link","label":"Verifying signatures","link":"/openapi/section/partner-api-overview/verifying-signatures","routeSlug":"/openapi/section/partner-api-overview/verifying-signatures","content":null},{"type":"link","label":"Acknowledging delivery","link":"/openapi/section/partner-api-overview/acknowledging-delivery","routeSlug":"/openapi/section/partner-api-overview/acknowledging-delivery","content":null},{"type":"link","label":"Retries","link":"/openapi/section/partner-api-overview/retries","routeSlug":"/openapi/section/partner-api-overview/retries","content":null},{"type":"link","label":"Delivery guarantees","link":"/openapi/section/partner-api-overview/delivery-guarantees","routeSlug":"/openapi/section/partner-api-overview/delivery-guarantees","content":null}],"content":null},{"type":"group","label":"Terminology","link":"/openapi/section/terminology","routeSlug":"/openapi/section/terminology","items":[{"type":"link","label":"Core Entities","link":"/openapi/section/terminology/core-entities","routeSlug":"/openapi/section/terminology/core-entities","content":null},{"type":"link","label":"Account","link":"/openapi/section/terminology/account","routeSlug":"/openapi/section/terminology/account","content":null},{"type":"link","label":"Location","link":"/openapi/section/terminology/location","routeSlug":"/openapi/section/terminology/location","content":null},{"type":"link","label":"Patient","link":"/openapi/section/terminology/patient","routeSlug":"/openapi/section/terminology/patient","content":null},{"type":"link","label":"Scheduling","link":"/openapi/section/terminology/scheduling","routeSlug":"/openapi/section/terminology/scheduling","content":null},{"type":"link","label":"Appointment","link":"/openapi/section/terminology/appointment","routeSlug":"/openapi/section/terminology/appointment","content":null},{"type":"link","label":"Appointment Type","link":"/openapi/section/terminology/appointment-type","routeSlug":"/openapi/section/terminology/appointment-type","content":null},{"type":"link","label":"Practitioner","link":"/openapi/section/terminology/practitioner","routeSlug":"/openapi/section/terminology/practitioner","content":null},{"type":"link","label":"Self-Scheduling","link":"/openapi/section/terminology/self-scheduling","routeSlug":"/openapi/section/terminology/self-scheduling","content":null},{"type":"link","label":"Self-Scheduling Attempt","link":"/openapi/section/terminology/self-scheduling-attempt","routeSlug":"/openapi/section/terminology/self-scheduling-attempt","content":null},{"type":"link","label":"Staff & Access","link":"/openapi/section/terminology/staff-and-access","routeSlug":"/openapi/section/terminology/staff-and-access","content":null},{"type":"link","label":"Staff Member","link":"/openapi/section/terminology/staff-member","routeSlug":"/openapi/section/terminology/staff-member","content":null},{"type":"link","label":"Role Group","link":"/openapi/section/terminology/role-group","routeSlug":"/openapi/section/terminology/role-group","content":null},{"type":"link","label":"Forms & Documentation","link":"/openapi/section/terminology/forms-and-documentation","routeSlug":"/openapi/section/terminology/forms-and-documentation","content":null},{"type":"link","label":"Form Template","link":"/openapi/section/terminology/form-template","routeSlug":"/openapi/section/terminology/form-template","content":null},{"type":"link","label":"Form Group","link":"/openapi/section/terminology/form-group","routeSlug":"/openapi/section/terminology/form-group","content":null},{"type":"link","label":"Form","link":"/openapi/section/terminology/form","routeSlug":"/openapi/section/terminology/form","content":null},{"type":"link","label":"Form Element","link":"/openapi/section/terminology/form-element","routeSlug":"/openapi/section/terminology/form-element","content":null},{"type":"link","label":"Form Answer","link":"/openapi/section/terminology/form-answer","routeSlug":"/openapi/section/terminology/form-answer","content":null},{"type":"link","label":"Form Template Group","link":"/openapi/section/terminology/form-template-group","routeSlug":"/openapi/section/terminology/form-template-group","content":null},{"type":"link","label":"Billing & Payments","link":"/openapi/section/terminology/billing-and-payments","routeSlug":"/openapi/section/terminology/billing-and-payments","content":null},{"type":"link","label":"Invoice","link":"/openapi/section/terminology/invoice","routeSlug":"/openapi/section/terminology/invoice","content":null},{"type":"link","label":"Invoice Line Item","link":"/openapi/section/terminology/invoice-line-item","routeSlug":"/openapi/section/terminology/invoice-line-item","content":null},{"type":"link","label":"Payment Request","link":"/openapi/section/terminology/payment-request","routeSlug":"/openapi/section/terminology/payment-request","content":null},{"type":"link","label":"Recurring Payment","link":"/openapi/section/terminology/recurring-payment","routeSlug":"/openapi/section/terminology/recurring-payment","content":null},{"type":"link","label":"Labs & Clinical","link":"/openapi/section/terminology/labs-and-clinical","routeSlug":"/openapi/section/terminology/labs-and-clinical","content":null},{"type":"link","label":"Lab","link":"/openapi/section/terminology/lab","routeSlug":"/openapi/section/terminology/lab","content":null},{"type":"link","label":"Test Panel","link":"/openapi/section/terminology/test-panel","routeSlug":"/openapi/section/terminology/test-panel","content":null},{"type":"link","label":"Test Component","link":"/openapi/section/terminology/test-component","routeSlug":"/openapi/section/terminology/test-component","content":null},{"type":"link","label":"Health Profile","link":"/openapi/section/terminology/health-profile","routeSlug":"/openapi/section/terminology/health-profile","content":null},{"type":"link","label":"Patient Management","link":"/openapi/section/terminology/patient-management","routeSlug":"/openapi/section/terminology/patient-management","content":null},{"type":"link","label":"Category","link":"/openapi/section/terminology/category","routeSlug":"/openapi/section/terminology/category","content":null},{"type":"link","label":"Patient Category","link":"/openapi/section/terminology/patient-category","routeSlug":"/openapi/section/terminology/patient-category","content":null},{"type":"link","label":"CRM Status Group","link":"/openapi/section/terminology/crm-status-group","routeSlug":"/openapi/section/terminology/crm-status-group","content":null},{"type":"link","label":"CRM Status","link":"/openapi/section/terminology/crm-status","routeSlug":"/openapi/section/terminology/crm-status","content":null},{"type":"link","label":"Communications","link":"/openapi/section/terminology/communications","routeSlug":"/openapi/section/terminology/communications","content":null},{"type":"link","label":"Notification","link":"/openapi/section/terminology/notification","routeSlug":"/openapi/section/terminology/notification","content":null},{"type":"link","label":"Notification Group","link":"/openapi/section/terminology/notification-group","routeSlug":"/openapi/section/terminology/notification-group","content":null},{"type":"link","label":"Identity & Security","link":"/openapi/section/terminology/identity-and-security","routeSlug":"/openapi/section/terminology/identity-and-security","content":null},{"type":"link","label":"Identity Proof","link":"/openapi/section/terminology/identity-proof","routeSlug":"/openapi/section/terminology/identity-proof","content":null},{"type":"link","label":"Verification Method","link":"/openapi/section/terminology/verification-method","routeSlug":"/openapi/section/terminology/verification-method","content":null}],"content":null},{"type":"separator","label":"API Endpoints","content":null},{"type":"group","label":"Account","link":"/openapi/account","routeSlug":"/openapi/account","items":[{"label":"List accounts","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/account/listaccounts","routeSlug":"/openapi/account/listaccounts","metadata":{"seo":{"title":"List accounts","description":"Retrieve a paginated list of accounts the partner integrator is authorized to access."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listAccounts","name":"List accounts","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account/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":"Retrieve a paginated list of accounts the partner integrator is authorized to access."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"sortBy","in":"query","schemaId":"schema_51","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_52","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[],"query":[{"name":"sortBy","in":"query","schemaId":"schema_51"},{"name":"sortDir","in":"query","schemaId":"schema_52"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","422"],"pointer":"/partner/v2/account","href":"account/listaccounts","openApiOperationId":"listAccounts","summary":"List accounts"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Accounts retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AccountListResponse"}},"schemaId":"components/schemas/AccountListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AccountListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AccountListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/account/listaccounts"}],"panels":[]}]},"httpPath":"/partner/v2/account"},{"label":"Get account by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/account/getaccount","routeSlug":"/openapi/account/getaccount","metadata":{"seo":{"title":"Get account by ID","description":"Retrieve account information and settings for the authorized account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getAccount","name":"Get account by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get account by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve account information and settings for the authorized account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true,"example":12345}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"example":12345,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}","href":"account/getaccount","openApiOperationId":"getAccount","summary":"Get account by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Account details","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AccountResponse"}},"schemaId":"components/schemas/AccountResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AccountResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AccountResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/account/getaccount"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}"}],"content":{"contentType":"group","meta":{"name":"Account"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Account","showPageActions":true},{"nodeType":"markdoc","content":"Account endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account","summary":"List accounts","prefix":{"name":"get","color":"get"},"badges":[],"link":"/account/listaccounts","deprecated":false},{"title":"/partner/v2/account/{accountId}","summary":"Get account by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/account/getaccount","deprecated":false}]}]}]}]}},{"type":"group","label":"Appointment Types","link":"/openapi/appointment-types","routeSlug":"/openapi/appointment-types","items":[{"label":"List appointment types","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointment-types/listappointmenttypes","routeSlug":"/openapi/appointment-types/listappointmenttypes","metadata":{"seo":{"title":"List appointment types","description":"Retrieve a paginated list of active appointment types for the account. Supports filtering by name/description and keyset pagination."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listAppointmentTypes","name":"List appointment types","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1appointment~1type/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List appointment types","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a paginated list of active appointment types for the account. Supports filtering by name/description and keyset pagination."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1appointment~1type/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"name","in":"query","schemaId":"schema_56","description":"Filter appointment types by name (case-insensitive contains match)","example":"Consultation"},{"name":"description","in":"query","schemaId":"schema_57","description":"Filter appointment types by description (case-insensitive contains match)","example":"arrive 15 minutes early"},{"name":"sortBy","in":"query","schemaId":"schema_58","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_59","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20},{"name":"active","in":"query","schemaId":"schema_60","description":"Filter by active status. If not specified, returns both active and inactive appointment types."}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1appointment~1type/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/appointment/type","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"name","in":"query","example":"Consultation","schemaId":"schema_56"},{"name":"description","in":"query","example":"arrive 15 minutes early","schemaId":"schema_57"},{"name":"sortBy","in":"query","schemaId":"schema_58"},{"name":"sortDir","in":"query","schemaId":"schema_59"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"},{"name":"active","in":"query","schemaId":"schema_60"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/appointment/type","href":"appointment-types/listappointmenttypes","openApiOperationId":"listAppointmentTypes","summary":"List appointment types"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Appointment types retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentTypeListResponse"}},"schemaId":"components/schemas/AppointmentTypeListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1appointment~1type/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AppointmentTypeListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentTypeListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointment-types/listappointmenttypes"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/appointment/type"},{"label":"Get appointment type by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointment-types/getappointmenttype","routeSlug":"/openapi/appointment-types/getappointmenttype","metadata":{"seo":{"title":"Get appointment type by ID","description":"Retrieve details for a specific appointment type."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getAppointmentType","name":"Get appointment type by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1appointment~1type~1{appointmentTypeId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get appointment type by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve details for a specific appointment type."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"appointmentTypeId","in":"path","schemaId":"schema_55","description":"Appointment Type ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1appointment~1type~1{appointmentTypeId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/appointment/type/{appointmentTypeId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"appointmentTypeId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/appointment/type/{appointmentTypeId}","href":"appointment-types/getappointmenttype","openApiOperationId":"getAppointmentType","summary":"Get appointment type by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Appointment type found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentTypeDTO"}},"schemaId":"components/schemas/AppointmentTypeDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Appointment type not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1appointment~1type~1{appointmentTypeId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AppointmentTypeDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentTypeDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointment-types/getappointmenttype"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/appointment/type/{appointmentTypeId}"}],"content":{"contentType":"group","meta":{"name":"Appointment Types"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Appointment Types","showPageActions":true},{"nodeType":"markdoc","content":"Appointment Type configuration endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/appointment/type","summary":"List appointment types","prefix":{"name":"get","color":"get"},"badges":[],"link":"/appointment-types/listappointmenttypes","deprecated":false},{"title":"/partner/v2/account/{accountId}/appointment/type/{appointmentTypeId}","summary":"Get appointment type by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/appointment-types/getappointmenttype","deprecated":false}]}]}]}]}},{"type":"group","label":"Appointments","link":"/openapi/appointments","routeSlug":"/openapi/appointments","items":[{"label":"List appointments","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointments/listappointments","routeSlug":"/openapi/appointments/listappointments","metadata":{"seo":{"title":"List appointments","description":"Retrieve a paginated list of appointments for the account. Supports filtering by location, practitioner, patient, date range, and status. Results are sorted by appointment start time by default."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listAppointments","name":"List appointments","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment/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":"Retrieve a paginated list of appointments for the account. Supports filtering by location, practitioner, patient, date range, and status. Results are sorted by appointment start time by default."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"practitionerId","in":"query","schemaId":"schema_55","description":"Filter by practitioner ID (staff member with a practitioner role)"},{"name":"patientId","in":"query","schemaId":"schema_55","description":"Filter by patient ID"},{"name":"appointmentTypeId","in":"query","schemaId":"schema_55","description":"Filter by appointment type ID"},{"name":"status","in":"query","schemaId":"schema_61","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by status (SCHEDULED, CONFIRMED, CHECKED_IN, IN_TREATMENT, CHECKED_OUT, CANCELLED, NO_SHOW)"},"children":[]}]}]}]},{"name":"startDate","in":"query","schemaId":"schema_61","description":"Start of date range (ISO 8601)","example":"2025-01-01T00:00:00Z"},{"name":"endDate","in":"query","schemaId":"schema_61","description":"End of date range (ISO 8601)","example":"2025-01-31T23:59:59Z"},{"name":"sortBy","in":"query","schemaId":"schema_62","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_59","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/appointment","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"practitionerId","in":"query","schemaId":"schema_55"},{"name":"patientId","in":"query","schemaId":"schema_55"},{"name":"appointmentTypeId","in":"query","schemaId":"schema_55"},{"name":"status","in":"query","schemaId":"schema_61"},{"name":"startDate","in":"query","example":"2025-01-01T00:00:00Z","schemaId":"schema_61"},{"name":"endDate","in":"query","example":"2025-01-31T23:59:59Z","schemaId":"schema_61"},{"name":"sortBy","in":"query","schemaId":"schema_62"},{"name":"sortDir","in":"query","schemaId":"schema_59"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/appointment","href":"appointments/listappointments","openApiOperationId":"listAppointments","summary":"List appointments"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Appointments retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentListResponse"}},"schemaId":"components/schemas/AppointmentListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AppointmentListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/listappointments"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/appointment"},{"label":"Create appointment","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointments/createappointment","routeSlug":"/openapi/appointments/createappointment","metadata":{"seo":{"title":"Create appointment","description":"Schedule a new appointment for a patient. Requires patient ID, practitioner ID, appointment type ID, scheduler config ID, and the desired start time. The system will validate availability before confirming the appointment."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createAppointment","name":"Create appointment","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create appointment","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Schedule a new appointment for a patient. Requires patient ID, practitioner ID, appointment type ID, scheduler config ID, and the desired start time. The system will validate availability before confirming the appointment."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateAppointmentRequest"}},"schemaId":"components/schemas/CreateAppointmentRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/account/{accountId}/location/{locationId}/appointment","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateAppointmentRequest"}},"responseCodes":["201","401","404","409","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/appointment","href":"appointments/createappointment","openApiOperationId":"createAppointment","summary":"Create appointment"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/CreateAppointmentRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateAppointmentRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Appointment created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentDTO"}},"schemaId":"components/schemas/AppointmentDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account or location not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"409","description":"Time slot is not available","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request data","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/AppointmentDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"409","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/createappointment"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/appointment"},{"label":"Get appointment by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointments/getappointment","routeSlug":"/openapi/appointments/getappointment","metadata":{"seo":{"title":"Get appointment by ID","description":"Retrieve detailed information about a specific appointment including patient details, practitioner, location, and appointment type information."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getAppointment","name":"Get appointment by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment~1{appointmentId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get appointment by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific appointment including patient details, practitioner, location, and appointment type information."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"appointmentId","in":"path","schemaId":"schema_55","description":"Appointment ID","required":true,"example":12345},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment~1{appointmentId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"appointmentId","in":"path","required":true,"example":12345,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}","href":"appointments/getappointment","openApiOperationId":"getAppointment","summary":"Get appointment by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Appointment found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentDTO"}},"schemaId":"components/schemas/AppointmentDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Appointment not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment~1{appointmentId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AppointmentDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/getappointment"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}"},{"label":"Update appointment","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointments/updateappointment","routeSlug":"/openapi/appointments/updateappointment","metadata":{"seo":{"title":"Update appointment","description":"Update an existing appointment. Can be used to reschedule (change time/practitioner) or update appointment details. Only provided fields will be updated."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateAppointment","name":"Update appointment","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment~1{appointmentId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update appointment","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update an existing appointment. Can be used to reschedule (change time/practitioner) or update appointment details. Only provided fields will be updated."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"appointmentId","in":"path","schemaId":"schema_55","description":"Appointment ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment~1{appointmentId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateAppointmentRequest"}},"schemaId":"components/schemas/UpdateAppointmentRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment~1{appointmentId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"appointmentId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UpdateAppointmentRequest"}},"responseCodes":["200","401","404","409","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}","href":"appointments/updateappointment","openApiOperationId":"updateAppointment","summary":"Update appointment"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/UpdateAppointmentRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateAppointmentRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Appointment updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentDTO"}},"schemaId":"components/schemas/AppointmentDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Appointment not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"409","description":"New time slot is not available","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request data","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment~1{appointmentId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AppointmentDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"409","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/updateappointment"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}"},{"label":"Get appointment confirm/cancel links","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointments/getappointmentlinks","routeSlug":"/openapi/appointments/getappointmentlinks","metadata":{"seo":{"title":"Get appointment confirm/cancel links","description":"Returns the patient-facing confirmation and cancellation URLs for an appointment — the same links Lobbie sends in its own reminder emails/texts, generated via the same mechanism. Generating a link does NOT send any notification to the patient. The cancel URL is only returned when patient cancellation is enabled for the account. Links expire at the appointment start time."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getAppointmentLinks","name":"Get appointment confirm/cancel links","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment~1{appointmentId}~1link/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get appointment confirm/cancel links","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 patient-facing confirmation and cancellation URLs for an appointment — the same links Lobbie sends in its own reminder emails/texts, generated via the same mechanism. Generating a link does NOT send any notification to the patient. The cancel URL is only returned when patient cancellation is enabled for the account. Links expire at the appointment start time."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"appointmentId","in":"path","schemaId":"schema_55","description":"Appointment ID","required":true,"example":12345},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment~1{appointmentId}~1link/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}/link","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"appointmentId","in":"path","required":true,"example":12345,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}/link","href":"appointments/getappointmentlinks","openApiOperationId":"getAppointmentLinks","summary":"Get appointment confirm/cancel links"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Links generated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentLinksDTO"}},"schemaId":"components/schemas/AppointmentLinksDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Appointment not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1appointment~1{appointmentId}~1link/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AppointmentLinksDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AppointmentLinksDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/getappointmentlinks"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}/link"}],"content":{"contentType":"group","meta":{"name":"Appointments"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Appointments","showPageActions":true},{"nodeType":"markdoc","content":"Appointment scheduling and management endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location/{locationId}/appointment","summary":"List appointments","prefix":{"name":"get","color":"get"},"badges":[],"link":"/appointments/listappointments","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/appointment","summary":"Create appointment","prefix":{"name":"post","color":"post"},"badges":[],"link":"/appointments/createappointment","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}","summary":"Get appointment by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/appointments/getappointment","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}","summary":"Update appointment","prefix":{"name":"put","color":"put"},"badges":[],"link":"/appointments/updateappointment","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}/link","summary":"Get appointment confirm/cancel links","prefix":{"name":"get","color":"get"},"badges":[],"link":"/appointments/getappointmentlinks","deprecated":false}]}]}]}]}},{"type":"group","label":"CRM Status Groups","link":"/openapi/crm-status-groups","routeSlug":"/openapi/crm-status-groups","items":[{"label":"List CRM status groups","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/crm-status-groups/listcrmstatusgroups","routeSlug":"/openapi/crm-status-groups/listcrmstatusgroups","metadata":{"seo":{"title":"List CRM status groups","description":"Retrieve the list of CRM status groups defined for the account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listCrmStatusGroups","name":"List CRM status groups","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List CRM status groups","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve the list of CRM status groups defined for the account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_63","description":"Filter by active status (true/false)"},{"name":"sortBy","in":"query","schemaId":"schema_64","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_59","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/crm-status-group","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"active","in":"query","schemaId":"schema_63"},{"name":"sortBy","in":"query","schemaId":"schema_64"},{"name":"sortDir","in":"query","schemaId":"schema_59"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/crm-status-group","href":"crm-status-groups/listcrmstatusgroups","openApiOperationId":"listCrmStatusGroups","summary":"List CRM status groups"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"CRM status groups retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CrmStatusGroupListResponse"}},"schemaId":"components/schemas/CrmStatusGroupListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CrmStatusGroupListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CrmStatusGroupListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/crm-status-groups/listcrmstatusgroups"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/crm-status-group"},{"label":"Get CRM status group by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/crm-status-groups/getcrmstatusgroup","routeSlug":"/openapi/crm-status-groups/getcrmstatusgroup","metadata":{"seo":{"title":"Get CRM status group by ID","description":"Retrieve detailed information about a specific CRM status group."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getCrmStatusGroup","name":"Get CRM status group by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group~1{groupId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get CRM status group by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific CRM status group."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"groupId","in":"path","schemaId":"schema_55","description":"CRM status group ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group~1{groupId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/crm-status-group/{groupId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"groupId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/crm-status-group/{groupId}","href":"crm-status-groups/getcrmstatusgroup","openApiOperationId":"getCrmStatusGroup","summary":"Get CRM status group by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"CRM status group found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CrmStatusGroupDTO"}},"schemaId":"components/schemas/CrmStatusGroupDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"CRM status group not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group~1{groupId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CrmStatusGroupDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CrmStatusGroupDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/crm-status-groups/getcrmstatusgroup"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/crm-status-group/{groupId}"},{"label":"List CRM statuses in group","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/crm-status-groups/listcrmstatuses","routeSlug":"/openapi/crm-status-groups/listcrmstatuses","metadata":{"seo":{"title":"List CRM statuses in group","description":"Retrieve all CRM statuses within the specified status group."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listCrmStatuses","name":"List CRM statuses in group","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group~1{groupId}~1status/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List CRM statuses in group","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve all CRM statuses within the specified status group."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"groupId","in":"path","schemaId":"schema_55","description":"CRM status group ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group~1{groupId}~1status/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_63","description":"Filter by active status (true/false)"},{"name":"sortBy","in":"query","schemaId":"schema_65","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_59","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group~1{groupId}~1status/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/crm-status-group/{groupId}/status","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"groupId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"active","in":"query","schemaId":"schema_63"},{"name":"sortBy","in":"query","schemaId":"schema_65"},{"name":"sortDir","in":"query","schemaId":"schema_59"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/crm-status-group/{groupId}/status","href":"crm-status-groups/listcrmstatuses","openApiOperationId":"listCrmStatuses","summary":"List CRM statuses in group"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"CRM statuses retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CrmStatusListResponse"}},"schemaId":"components/schemas/CrmStatusListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"CRM status group not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group~1{groupId}~1status/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CrmStatusListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CrmStatusListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/crm-status-groups/listcrmstatuses"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/crm-status-group/{groupId}/status"},{"label":"Get CRM status by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/crm-status-groups/getcrmstatus","routeSlug":"/openapi/crm-status-groups/getcrmstatus","metadata":{"seo":{"title":"Get CRM status by ID","description":"Retrieve detailed information about a specific CRM status."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getCrmStatus","name":"Get CRM status by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group~1{groupId}~1status~1{statusId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get CRM status by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific CRM status."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"groupId","in":"path","schemaId":"schema_55","description":"CRM status group ID","required":true},{"name":"statusId","in":"path","schemaId":"schema_55","description":"CRM status ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group~1{groupId}~1status~1{statusId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/crm-status-group/{groupId}/status/{statusId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"groupId","in":"path","required":true,"schemaId":"schema_55"},{"name":"statusId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/crm-status-group/{groupId}/status/{statusId}","href":"crm-status-groups/getcrmstatus","openApiOperationId":"getCrmStatus","summary":"Get CRM status by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"CRM status found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CrmStatusDTO"}},"schemaId":"components/schemas/CrmStatusDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"CRM status not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1crm-status-group~1{groupId}~1status~1{statusId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CrmStatusDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CrmStatusDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/crm-status-groups/getcrmstatus"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/crm-status-group/{groupId}/status/{statusId}"}],"content":{"contentType":"group","meta":{"name":"CRM Status Groups"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"CRM Status Groups","showPageActions":true},{"nodeType":"markdoc","content":"CRM status retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/crm-status-group","summary":"List CRM status groups","prefix":{"name":"get","color":"get"},"badges":[],"link":"/crm-status-groups/listcrmstatusgroups","deprecated":false},{"title":"/partner/v2/account/{accountId}/crm-status-group/{groupId}","summary":"Get CRM status group by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/crm-status-groups/getcrmstatusgroup","deprecated":false},{"title":"/partner/v2/account/{accountId}/crm-status-group/{groupId}/status","summary":"List CRM statuses in group","prefix":{"name":"get","color":"get"},"badges":[],"link":"/crm-status-groups/listcrmstatuses","deprecated":false},{"title":"/partner/v2/account/{accountId}/crm-status-group/{groupId}/status/{statusId}","summary":"Get CRM status by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/crm-status-groups/getcrmstatus","deprecated":false}]}]}]}]}},{"type":"group","label":"Categories","link":"/openapi/categories","routeSlug":"/openapi/categories","items":[{"label":"List categories","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/categories/listcategories","routeSlug":"/openapi/categories/listcategories","metadata":{"seo":{"title":"List categories","description":"Retrieve the list of patient categories defined for the account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listCategories","name":"List categories","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1category/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List categories","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve the list of patient categories defined for the account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1category/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_63","description":"Filter by active status (true/false)"},{"name":"sortBy","in":"query","schemaId":"schema_65","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_59","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1category/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/category","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"active","in":"query","schemaId":"schema_63"},{"name":"sortBy","in":"query","schemaId":"schema_65"},{"name":"sortDir","in":"query","schemaId":"schema_59"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/category","href":"categories/listcategories","openApiOperationId":"listCategories","summary":"List categories"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Categories retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CategoryListResponse"}},"schemaId":"components/schemas/CategoryListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1category/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CategoryListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CategoryListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/categories/listcategories"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/category"},{"label":"Get category by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/categories/getcategory","routeSlug":"/openapi/categories/getcategory","metadata":{"seo":{"title":"Get category by ID","description":"Retrieve detailed information about a specific category."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getCategory","name":"Get category by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1category~1{categoryId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get category by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific category."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"categoryId","in":"path","schemaId":"schema_55","description":"Category ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1category~1{categoryId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/category/{categoryId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"categoryId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/category/{categoryId}","href":"categories/getcategory","openApiOperationId":"getCategory","summary":"Get category by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Category found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CategoryDTO"}},"schemaId":"components/schemas/CategoryDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Category not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1category~1{categoryId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CategoryDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CategoryDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/categories/getcategory"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/category/{categoryId}"}],"content":{"contentType":"group","meta":{"name":"Categories"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Categories","showPageActions":true},{"nodeType":"markdoc","content":"Patient category definition retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/category","summary":"List categories","prefix":{"name":"get","color":"get"},"badges":[],"link":"/categories/listcategories","deprecated":false},{"title":"/partner/v2/account/{accountId}/category/{categoryId}","summary":"Get category by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/categories/getcategory","deprecated":false}]}]}]}]}},{"type":"group","label":"Form Template Groups","link":"/openapi/form-template-groups","routeSlug":"/openapi/form-template-groups","items":[{"label":"List form template groups","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/form-template-groups/listformtemplategroups","routeSlug":"/openapi/form-template-groups/listformtemplategroups","metadata":{"seo":{"title":"List form template groups","description":"Retrieve a list of form template groups for the account. Form template groups are pre-configured collections of forms that can be assigned together."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listFormTemplateGroups","name":"List form template groups","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1form~1template-group/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List form template groups","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a list of form template groups for the account. Form template groups are pre-configured collections of forms that can be assigned together."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1form~1template-group/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"practitionerId","in":"query","schemaId":"schema_55","description":"Filter by practitioner ID"},{"name":"active","in":"query","schemaId":"schema_60","description":"Filter by active status"},{"name":"cursor","in":"query","schemaId":"schema_61","description":"Pagination cursor"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1form~1template-group/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/form/template-group","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"practitionerId","in":"query","schemaId":"schema_55"},{"name":"active","in":"query","schemaId":"schema_60"},{"name":"cursor","in":"query","schemaId":"schema_61"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/form/template-group","href":"form-template-groups/listformtemplategroups","openApiOperationId":"listFormTemplateGroups","summary":"List form template groups"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Form template groups retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormTemplateGroupListResponse"}},"schemaId":"components/schemas/FormTemplateGroupListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1form~1template-group/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormTemplateGroupListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormTemplateGroupListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/form-template-groups/listformtemplategroups"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/form/template-group"},{"label":"Get form template group by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/form-template-groups/getformtemplategroup","routeSlug":"/openapi/form-template-groups/getformtemplategroup","metadata":{"seo":{"title":"Get form template group by ID","description":"Retrieve detailed information about a form template group including the list of form templates it contains."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getFormTemplateGroup","name":"Get form template group by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1form~1template-group~1{groupId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get form template group by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a form template group including the list of form templates it contains."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"groupId","in":"path","schemaId":"schema_55","description":"Form template group ID","required":true,"example":500},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1form~1template-group~1{groupId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/form/template-group/{groupId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"groupId","in":"path","required":true,"example":500,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/form/template-group/{groupId}","href":"form-template-groups/getformtemplategroup","openApiOperationId":"getFormTemplateGroup","summary":"Get form template group by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Form template group found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormTemplateGroupDTO"}},"schemaId":"components/schemas/FormTemplateGroupDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form template group not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1form~1template-group~1{groupId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormTemplateGroupDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormTemplateGroupDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/form-template-groups/getformtemplategroup"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/form/template-group/{groupId}"}],"content":{"contentType":"group","meta":{"name":"Form Template Groups"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Form Template Groups","showPageActions":true},{"nodeType":"markdoc","content":"Form template group retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/form/template-group","summary":"List form template groups","prefix":{"name":"get","color":"get"},"badges":[],"link":"/form-template-groups/listformtemplategroups","deprecated":false},{"title":"/partner/v2/account/{accountId}/form/template-group/{groupId}","summary":"Get form template group by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/form-template-groups/getformtemplategroup","deprecated":false}]}]}]}]}},{"type":"group","label":"Form Templates","link":"/openapi/form-templates","routeSlug":"/openapi/form-templates","items":[{"label":"List form templates","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/form-templates/listformtemplates","routeSlug":"/openapi/form-templates/listformtemplates","metadata":{"seo":{"title":"List form templates","description":"Retrieve a paginated list of form templates for the account. Templates define the structure of forms that can be assigned to patients. Supports filtering by appointment type and staff-only visibility."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listFormTemplates","name":"List form templates","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List form templates","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a paginated list of form templates for the account. Templates define the structure of forms that can be assigned to patients. Supports filtering by appointment type and staff-only visibility."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"appointmentTypeId","in":"query","schemaId":"schema_55","description":"Filter by appointment type ID"},{"name":"isStaffOnly","in":"query","schemaId":"schema_63","description":"Filter for staff-only templates"},{"name":"active","in":"query","schemaId":"schema_60","description":"Filter by active status"},{"name":"search","in":"query","schemaId":"schema_61","description":"Search by template name"},{"name":"cursor","in":"query","schemaId":"schema_61","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/form/template","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"appointmentTypeId","in":"query","schemaId":"schema_55"},{"name":"isStaffOnly","in":"query","schemaId":"schema_63"},{"name":"active","in":"query","schemaId":"schema_60"},{"name":"search","in":"query","schemaId":"schema_61"},{"name":"cursor","in":"query","schemaId":"schema_61"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form/template","href":"form-templates/listformtemplates","openApiOperationId":"listFormTemplates","summary":"List form templates"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Form templates retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormTemplateListResponse"}},"schemaId":"components/schemas/FormTemplateListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormTemplateListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormTemplateListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/form-templates/listformtemplates"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form/template"},{"label":"Get form template by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/form-templates/getformtemplate","routeSlug":"/openapi/form-templates/getformtemplate","metadata":{"seo":{"title":"Get form template by ID","description":"Retrieve detailed information about a form template including all form elements/fields. Use this to understand the structure of a form for integration purposes."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getFormTemplate","name":"Get form template by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template~1{formTemplateId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get form template by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a form template including all form elements/fields. Use this to understand the structure of a form for integration purposes."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"formTemplateId","in":"path","schemaId":"schema_55","description":"Form template ID","required":true,"example":12345},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template~1{formTemplateId}/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"includeElements","in":"query","schemaId":"schema_66","description":"Include form elements/fields in response","example":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template~1{formTemplateId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/form/template/{formTemplateId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"formTemplateId","in":"path","required":true,"example":12345,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"includeElements","in":"query","example":true,"schemaId":"schema_66"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form/template/{formTemplateId}","href":"form-templates/getformtemplate","openApiOperationId":"getFormTemplate","summary":"Get form template by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Form template found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormTemplateDTO"}},"schemaId":"components/schemas/FormTemplateDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form template not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template~1{formTemplateId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormTemplateDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormTemplateDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/form-templates/getformtemplate"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form/template/{formTemplateId}"},{"label":"Get form template attributes","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/form-templates/getformtemplateattributes","routeSlug":"/openapi/form-templates/getformtemplateattributes","metadata":{"seo":{"title":"Get form template attributes","description":"Retrieve the list of mapped attributes for a template. Attributes are named mappings for form fields (e.g., 'first_name' or 'email') that can be used for pre-filling and data extraction."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getFormTemplateAttributes","name":"Get form template attributes","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template~1{formTemplateId}~1attribute/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get form template attributes","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":"Retrieve the list of mapped attributes for a template. Attributes are named mappings for form fields (e.g., 'first_name' or 'email') that can be used for pre-filling and data extraction."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"formTemplateId","in":"path","schemaId":"schema_55","description":"Form template ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template~1{formTemplateId}~1attribute/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/form/template/{formTemplateId}/attribute","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"formTemplateId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form/template/{formTemplateId}/attribute","href":"form-templates/getformtemplateattributes","openApiOperationId":"getFormTemplateAttributes","summary":"Get form template attributes"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Form attributes retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormAttributeListResponse"}},"schemaId":"components/schemas/FormAttributeListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form template not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template~1{formTemplateId}~1attribute/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormAttributeListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormAttributeListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/form-templates/getformtemplateattributes"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form/template/{formTemplateId}/attribute"},{"label":"Get form template elements","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/form-templates/getformtemplateelements","routeSlug":"/openapi/form-templates/getformtemplateelements","metadata":{"seo":{"title":"Get form template elements","description":"Retrieve the list of form elements (fields) for a template. Each element represents an input field, with its type, label, and optional attribute mapping."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getFormTemplateElements","name":"Get form template elements","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template~1{formTemplateId}~1element/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get form template elements","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve the list of form elements (fields) for a template. Each element represents an input field, with its type, label, and optional attribute mapping."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"formTemplateId","in":"path","schemaId":"schema_55","description":"Form template ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template~1{formTemplateId}~1element/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/form/template/{formTemplateId}/element","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"formTemplateId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form/template/{formTemplateId}/element","href":"form-templates/getformtemplateelements","openApiOperationId":"getFormTemplateElements","summary":"Get form template elements"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Form elements retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormElementListResponse"}},"schemaId":"components/schemas/FormElementListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form template not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form~1template~1{formTemplateId}~1element/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormElementListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormElementListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/form-templates/getformtemplateelements"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form/template/{formTemplateId}/element"}],"content":{"contentType":"group","meta":{"name":"Form Templates"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Form Templates","showPageActions":true},{"nodeType":"markdoc","content":"Form template reference data"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location/{locationId}/form/template","summary":"List form templates","prefix":{"name":"get","color":"get"},"badges":[],"link":"/form-templates/listformtemplates","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form/template/{formTemplateId}","summary":"Get form template by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/form-templates/getformtemplate","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form/template/{formTemplateId}/attribute","summary":"Get form template attributes","prefix":{"name":"get","color":"get"},"badges":[],"link":"/form-templates/getformtemplateattributes","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form/template/{formTemplateId}/element","summary":"Get form template elements","prefix":{"name":"get","color":"get"},"badges":[],"link":"/form-templates/getformtemplateelements","deprecated":false}]}]}]}]}},{"type":"group","label":"Forms","link":"/openapi/forms","routeSlug":"/openapi/forms","items":[{"label":"List form packets","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/forms/listformpackets","routeSlug":"/openapi/forms/listformpackets","metadata":{"seo":{"title":"List form packets","description":"Retrieve a paginated list of form packets for the account. Supports filtering by patient, location, and date range. Form packets contain one or more forms assigned to a patient."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listFormPackets","name":"List form packets","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List form packets","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a paginated list of form packets for the account. Supports filtering by patient, location, and date range. Form packets contain one or more forms assigned to a patient."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"patientId","in":"query","schemaId":"schema_55","description":"Filter by patient ID"},{"name":"formTemplateId","in":"query","schemaId":"schema_55","description":"Filter by form template ID"},{"name":"startDate","in":"query","schemaId":"schema_61","description":"Start of date range filter on the form packet due date (ISO 8601)"},{"name":"endDate","in":"query","schemaId":"schema_61","description":"End of date range filter on the form packet due date (ISO 8601)"},{"name":"sortBy","in":"query","schemaId":"schema_67","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sort by (DUE_DATE, CREATED_DATE, ID)"},"children":[]}]}]}]},{"name":"sortDir","in":"query","schemaId":"schema_68","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_61","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20},{"name":"active","in":"query","schemaId":"schema_60","description":"Filter by internal active flag. Active packets are those that have not been deactivated by the system (e.g. via appointment cancellation). If not specified, returns both active and inactive form packets."}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/form-packet","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"patientId","in":"query","schemaId":"schema_55"},{"name":"formTemplateId","in":"query","schemaId":"schema_55"},{"name":"startDate","in":"query","schemaId":"schema_61"},{"name":"endDate","in":"query","schemaId":"schema_61"},{"name":"sortBy","in":"query","schemaId":"schema_67"},{"name":"sortDir","in":"query","schemaId":"schema_68"},{"name":"cursor","in":"query","schemaId":"schema_61"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"},{"name":"active","in":"query","schemaId":"schema_60"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form-packet","href":"forms/listformpackets","openApiOperationId":"listFormPackets","summary":"List form packets"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Form packets retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormPacketListResponse"}},"schemaId":"components/schemas/FormPacketListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormPacketListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormPacketListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/forms/listformpackets"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form-packet"},{"label":"Create form packet","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/forms/createformpacket","routeSlug":"/openapi/forms/createformpacket","metadata":{"seo":{"title":"Create form packet","description":"Create a new form packet for a patient. Specify the patient and either a list of form template IDs or a form template group ID. Optionally set a due date and pre-fill form fields with known data using attribute name keys (see the prefill field for details). Use GET /form/template/{id}/attribute to discover available attribute names for a template."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createFormPacket","name":"Create form packet","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create form packet","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":"Create a new form packet for a patient. Specify the patient and either a list of form template IDs or a form template group ID. Optionally set a due date and pre-fill form fields with known data using attribute name keys (see the prefill field for details). Use GET /form/template/{id}/attribute to discover available attribute names for a template."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateFormPacketRequest"}},"schemaId":"components/schemas/CreateFormPacketRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/account/{accountId}/location/{locationId}/form-packet","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateFormPacketRequest"}},"responseCodes":["201","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form-packet","href":"forms/createformpacket","openApiOperationId":"createFormPacket","summary":"Create form packet"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/CreateFormPacketRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateFormPacketRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Form packet created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormPacketDTO"}},"schemaId":"components/schemas/FormPacketDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account or location not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Validation error - invalid template IDs or patient not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/FormPacketDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormPacketDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/forms/createformpacket"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form-packet"},{"label":"Archive form packet","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/forms/archiveformpacket","routeSlug":"/openapi/forms/archiveformpacket","metadata":{"seo":{"title":"Archive form packet","description":"Archive a form packet. Archived packets are hidden from default views."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"archiveFormPacket","name":"Archive form packet","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Archive form packet","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Archive a form packet. Archived packets are hidden from default views."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"formPacketId","in":"path","schemaId":"schema_55","description":"Form packet ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"formPacketId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["204","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}","href":"forms/archiveformpacket","openApiOperationId":"archiveFormPacket","summary":"Archive form packet"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204","description":"Form packet archived successfully"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form packet not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"204"},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/forms/archiveformpacket"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}"},{"label":"Get form packet by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/forms/getformpacket","routeSlug":"/openapi/forms/getformpacket","metadata":{"seo":{"title":"Get form packet by ID","description":"Retrieve detailed information about a form packet including all forms and their completion status. Use the form sub-resource endpoints to retrieve answers."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getFormPacket","name":"Get form packet by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get form packet by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a form packet including all forms and their completion status. Use the form sub-resource endpoints to retrieve answers."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"formPacketId","in":"path","schemaId":"schema_55","description":"Form packet ID","required":true,"example":12345},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"formPacketId","in":"path","required":true,"example":12345,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}","href":"forms/getformpacket","openApiOperationId":"getFormPacket","summary":"Get form packet by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Form packet found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormPacketDTO"}},"schemaId":"components/schemas/FormPacketDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form packet not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormPacketDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormPacketDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/forms/getformpacket"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}"},{"label":"Update form packet","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/forms/updateformpacket","routeSlug":"/openapi/forms/updateformpacket","metadata":{"seo":{"title":"Update form packet","description":"Update a form packet. Can be used to change the due date, add additional forms, archive or unarchive the packet, or pre-fill form fields."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateFormPacket","name":"Update form packet","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update form packet","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update a form packet. Can be used to change the due date, add additional forms, archive or unarchive the packet, or pre-fill form fields."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"formPacketId","in":"path","schemaId":"schema_55","description":"Form packet ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateFormPacketRequest"}},"schemaId":"components/schemas/UpdateFormPacketRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"formPacketId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UpdateFormPacketRequest"}},"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}","href":"forms/updateformpacket","openApiOperationId":"updateFormPacket","summary":"Update form packet"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/UpdateFormPacketRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateFormPacketRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Form packet updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormPacketDTO"}},"schemaId":"components/schemas/FormPacketDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form packet not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request data","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormPacketDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormPacketDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/forms/updateformpacket"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}"},{"label":"List forms in a packet","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/forms/listforms","routeSlug":"/openapi/forms/listforms","metadata":{"seo":{"title":"List forms in a packet","description":"Retrieve all active forms within a form packet, including their completion status and template information."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listForms","name":"List forms in a packet","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List forms in a packet","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve all active forms within a form packet, including their completion status and template information."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"formPacketId","in":"path","schemaId":"schema_55","description":"Form packet ID","required":true},{"name":"formPacketId","in":"path","schemaId":"schema_55","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"includeAnswers","in":"query","schemaId":"schema_66","description":"Include form answers in response","example":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"formPacketId","in":"path","required":true,"schemaId":"schema_55"},{"name":"formPacketId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"includeAnswers","in":"query","example":true,"schemaId":"schema_66"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form","href":"forms/listforms","openApiOperationId":"listForms","summary":"List forms in a packet"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Forms retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_69"}},"schemaId":"schema_69"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form packet not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_69","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_69"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/forms/listforms"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form"},{"label":"Get a single form","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/forms/getform","routeSlug":"/openapi/forms/getform","metadata":{"seo":{"title":"Get a single form","description":"Retrieve a single form within a packet, including all submitted answers."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getForm","name":"Get a single form","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get a single form","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a single form within a packet, including all submitted answers."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"formPacketId","in":"path","schemaId":"schema_55","description":"Form packet ID","required":true},{"name":"formId","in":"path","schemaId":"schema_55","description":"Form ID","required":true},{"name":"formPacketId","in":"path","schemaId":"schema_55","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"includeAnswers","in":"query","schemaId":"schema_66","description":"Include form answers in response","example":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form/{formId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"formPacketId","in":"path","required":true,"schemaId":"schema_55"},{"name":"formId","in":"path","required":true,"schemaId":"schema_55"},{"name":"formPacketId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"includeAnswers","in":"query","example":true,"schemaId":"schema_66"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form/{formId}","href":"forms/getform","openApiOperationId":"getForm","summary":"Get a single form"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Form retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormDTO"}},"schemaId":"components/schemas/FormDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form or form packet not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/forms/getform"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form/{formId}"},{"label":"Update form answers","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/forms/updateformanswers","routeSlug":"/openapi/forms/updateformanswers","metadata":{"seo":{"title":"Update form answers","description":"Update answers for a specific form within a packet. Provide a list of answer updates keyed by form element ID."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateFormAnswers","name":"Update form answers","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update form answers","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update answers for a specific form within a packet. Provide a list of answer updates keyed by form element ID."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"formPacketId","in":"path","schemaId":"schema_55","description":"Form packet ID","required":true},{"name":"formId","in":"path","schemaId":"schema_55","description":"Form ID","required":true},{"name":"formPacketId","in":"path","schemaId":"schema_55","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}/put/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"includeAnswers","in":"query","schemaId":"schema_66","description":"Include form answers in response","example":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateFormAnswersRequest"}},"schemaId":"components/schemas/UpdateFormAnswersRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form/{formId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"formPacketId","in":"path","required":true,"schemaId":"schema_55"},{"name":"formId","in":"path","required":true,"schemaId":"schema_55"},{"name":"formPacketId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"includeAnswers","in":"query","example":true,"schemaId":"schema_66"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UpdateFormAnswersRequest"}},"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form/{formId}","href":"forms/updateformanswers","openApiOperationId":"updateFormAnswers","summary":"Update form answers"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/UpdateFormAnswersRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateFormAnswersRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Form answers updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormDTO"}},"schemaId":"components/schemas/FormDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form or form packet not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request data","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/forms/updateformanswers"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form/{formId}"},{"label":"Submit a form","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/forms/submitform","routeSlug":"/openapi/forms/submitform","metadata":{"seo":{"title":"Submit a form","description":"Mark a form as complete. Every required form element must have an answer; otherwise the request is rejected with a 422 listing the missing fields. Once submitted, the form is considered finalized. If all forms in the packet are complete, the packet is also marked complete."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"submitForm","name":"Submit a form","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}~1submit/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Submit a form","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Mark a form as complete. Every required form element must have an answer; otherwise the request is rejected with a 422 listing the missing fields. Once submitted, the form is considered finalized. If all forms in the packet are complete, the packet is also marked complete."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"formPacketId","in":"path","schemaId":"schema_55","description":"Form packet ID","required":true},{"name":"formId","in":"path","schemaId":"schema_55","description":"Form ID","required":true},{"name":"formPacketId","in":"path","schemaId":"schema_55","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}~1submit/put/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"includeAnswers","in":"query","schemaId":"schema_66","description":"Include form answers in response","example":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}~1submit/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form/{formId}/submit","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"formPacketId","in":"path","required":true,"schemaId":"schema_55"},{"name":"formId","in":"path","required":true,"schemaId":"schema_55"},{"name":"formPacketId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"includeAnswers","in":"query","example":true,"schemaId":"schema_66"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form/{formId}/submit","href":"forms/submitform","openApiOperationId":"submitForm","summary":"Submit a form"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Form submitted successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormDTO"}},"schemaId":"components/schemas/FormDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form or form packet not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"One or more required form elements are missing answers","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1form~1{formId}~1submit/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/forms/submitform"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form/{formId}/submit"},{"label":"Get form packet links","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/forms/getformpacketlinks","routeSlug":"/openapi/forms/getformpacketlinks","metadata":{"seo":{"title":"Get form packet links","description":"Retrieve previously generated patient-facing and staff-facing URLs. Returns null URLs if POST /link has not been called yet."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getFormPacketLinks","name":"Get form packet links","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1link/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get form packet links","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve previously generated patient-facing and staff-facing URLs. Returns null URLs if POST /link has not been called yet."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"formPacketId","in":"path","schemaId":"schema_55","description":"Form packet ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1link/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/link","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"formPacketId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/link","href":"forms/getformpacketlinks","openApiOperationId":"getFormPacketLinks","summary":"Get form packet links"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Cached links returned","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormPacketLinksDTO"}},"schemaId":"components/schemas/FormPacketLinksDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form packet not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1link/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormPacketLinksDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormPacketLinksDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/forms/getformpacketlinks"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/link"},{"label":"Generate form packet links","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/forms/generateformpacketlinks","routeSlug":"/openapi/forms/generateformpacketlinks","metadata":{"seo":{"title":"Generate form packet links","description":"Generate patient-facing and staff-facing URLs for a form packet. The patient URL allows the patient to complete forms. The staff URL links to the staff view. This may create notification and short-URL records."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"generateFormPacketLinks","name":"Generate form packet links","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1link/post","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Generate form packet links","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Generate patient-facing and staff-facing URLs for a form packet. The patient URL allows the patient to complete forms. The staff URL links to the staff view. This may create notification and short-URL records."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"formPacketId","in":"path","schemaId":"schema_55","description":"Form packet ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1link/post/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/link","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"formPacketId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/link","href":"forms/generateformpacketlinks","openApiOperationId":"generateFormPacketLinks","summary":"Generate form packet links"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Links generated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormPacketLinksDTO"}},"schemaId":"components/schemas/FormPacketLinksDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Form packet not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1form-packet~1{formPacketId}~1link/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/FormPacketLinksDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/FormPacketLinksDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/forms/generateformpacketlinks"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/link"}],"content":{"contentType":"group","meta":{"name":"Forms"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Forms","showPageActions":true},{"nodeType":"markdoc","content":"Individual form operations within a form packet"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location/{locationId}/form-packet","summary":"List form packets","prefix":{"name":"get","color":"get"},"badges":[],"link":"/forms/listformpackets","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form-packet","summary":"Create form packet","prefix":{"name":"post","color":"post"},"badges":[],"link":"/forms/createformpacket","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}","summary":"Archive form packet","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/forms/archiveformpacket","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}","summary":"Get form packet by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/forms/getformpacket","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}","summary":"Update form packet","prefix":{"name":"put","color":"put"},"badges":[],"link":"/forms/updateformpacket","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form","summary":"List forms in a packet","prefix":{"name":"get","color":"get"},"badges":[],"link":"/forms/listforms","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form/{formId}","summary":"Get a single form","prefix":{"name":"get","color":"get"},"badges":[],"link":"/forms/getform","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form/{formId}","summary":"Update form answers","prefix":{"name":"put","color":"put"},"badges":[],"link":"/forms/updateformanswers","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/form/{formId}/submit","summary":"Submit a form","prefix":{"name":"put","color":"put"},"badges":[],"link":"/forms/submitform","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/link","summary":"Get form packet links","prefix":{"name":"get","color":"get"},"badges":[],"link":"/forms/getformpacketlinks","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/form-packet/{formPacketId}/link","summary":"Generate form packet links","prefix":{"name":"post","color":"post"},"badges":[],"link":"/forms/generateformpacketlinks","deprecated":false}]}]}]}]}},{"type":"group","label":"Health Profile","link":"/openapi/health-profile","routeSlug":"/openapi/health-profile","items":[{"label":"Get allergy by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/health-profile/getallergy","routeSlug":"/openapi/health-profile/getallergy","metadata":{"seo":{"title":"Get allergy by ID","description":"Retrieve detailed information about a specific allergy. Scoped by account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getAllergy","name":"Get allergy by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1health-profile~1allergies~1{allergyId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get allergy by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific allergy. Scoped by account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"allergyId","in":"path","schemaId":"schema_55","description":"Allergy ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1health-profile~1allergies~1{allergyId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/health-profile/allergies/{allergyId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"allergyId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/health-profile/allergies/{allergyId}","href":"health-profile/getallergy","openApiOperationId":"getAllergy","summary":"Get allergy by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Allergy found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AllergyDTO"}},"schemaId":"components/schemas/AllergyDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Allergy not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1health-profile~1allergies~1{allergyId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AllergyDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AllergyDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/health-profile/getallergy"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/health-profile/allergies/{allergyId}"},{"label":"Get medication by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/health-profile/getmedication","routeSlug":"/openapi/health-profile/getmedication","metadata":{"seo":{"title":"Get medication by ID","description":"Retrieve detailed information about a specific medication. Scoped by account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getMedication","name":"Get medication by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1health-profile~1medications~1{medicationId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get medication by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific medication. Scoped by account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"medicationId","in":"path","schemaId":"schema_55","description":"Medication ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1health-profile~1medications~1{medicationId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/health-profile/medications/{medicationId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"medicationId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/health-profile/medications/{medicationId}","href":"health-profile/getmedication","openApiOperationId":"getMedication","summary":"Get medication by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Medication found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/MedicationDTO"}},"schemaId":"components/schemas/MedicationDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Medication not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1health-profile~1medications~1{medicationId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/MedicationDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/MedicationDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/health-profile/getmedication"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/health-profile/medications/{medicationId}"},{"label":"Get problem by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/health-profile/getproblem","routeSlug":"/openapi/health-profile/getproblem","metadata":{"seo":{"title":"Get problem by ID","description":"Retrieve detailed information about a specific problem/diagnosis. Scoped by account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getProblem","name":"Get problem by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1health-profile~1problems~1{problemId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get problem by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific problem/diagnosis. Scoped by account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"problemId","in":"path","schemaId":"schema_55","description":"Problem ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1health-profile~1problems~1{problemId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/health-profile/problems/{problemId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"problemId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/health-profile/problems/{problemId}","href":"health-profile/getproblem","openApiOperationId":"getProblem","summary":"Get problem by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Problem found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ProblemDTO"}},"schemaId":"components/schemas/ProblemDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Problem not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1health-profile~1problems~1{problemId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ProblemDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ProblemDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/health-profile/getproblem"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/health-profile/problems/{problemId}"}],"content":{"contentType":"group","meta":{"name":"Health Profile"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Health Profile","showPageActions":true},{"nodeType":"markdoc","content":"Patient health profile items (allergies, medications, problems) retrieval by ID under account"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/health-profile/allergies/{allergyId}","summary":"Get allergy by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/health-profile/getallergy","deprecated":false},{"title":"/partner/v2/account/{accountId}/health-profile/medications/{medicationId}","summary":"Get medication by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/health-profile/getmedication","deprecated":false},{"title":"/partner/v2/account/{accountId}/health-profile/problems/{problemId}","summary":"Get problem by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/health-profile/getproblem","deprecated":false}]}]}]}]}},{"type":"group","label":"Identity Proof","link":"/openapi/identity-proof","routeSlug":"/openapi/identity-proof","items":[{"label":"Create identity proof","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/identity-proof/createidentityproof","routeSlug":"/openapi/identity-proof/createidentityproof","metadata":{"seo":{"title":"Create identity proof","description":"Create a new identity proof session for person verification within this account. Returns an ID and secure token for subsequent requests."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createIdentityProof","name":"Create identity proof","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create identity proof","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new identity proof session for person verification within this account. Returns an ID and secure token for subsequent requests."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/IdentityProofCreateRequest"}},"schemaId":"components/schemas/IdentityProofCreateRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/account/{accountId}/identity-proof","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/IdentityProofCreateRequest"}},"responseCodes":["201","401","404","422"],"pointer":"/partner/v2/account/{accountId}/identity-proof","href":"identity-proof/createidentityproof","openApiOperationId":"createIdentityProof","summary":"Create identity proof"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/IdentityProofCreateRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/IdentityProofCreateRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Identity proof created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/IdentityProofResponse"}},"schemaId":"components/schemas/IdentityProofResponse"},{"code":"401","description":"Unauthorized - invalid or missing partner token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request - missing or invalid verification method","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/IdentityProofResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/IdentityProofResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/identity-proof/createidentityproof"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/identity-proof"},{"label":"Get identity proof status","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/identity-proof/getidentityproofstatus","routeSlug":"/openapi/identity-proof/getidentityproofstatus","metadata":{"seo":{"title":"Get identity proof status","description":"Returns the current status of an identity proof session, including which verification methods have been verified and which are still pending."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getIdentityProofStatus","name":"Get identity proof status","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get identity proof status","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns the current status of an identity proof session, including which verification methods have been verified and which are still pending."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","required":true},{"name":"id","in":"path","schemaId":"schema_55","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/identity-proof/{id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"id","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/identity-proof/{id}","href":"identity-proof/getidentityproofstatus","openApiOperationId":"getIdentityProofStatus","summary":"Get identity proof status"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Identity proof status retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/IdentityProofStatusResponse"}},"schemaId":"components/schemas/IdentityProofStatusResponse"},{"code":"401","description":"Unauthorized - invalid or missing partner token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Identity proof not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/IdentityProofStatusResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/IdentityProofStatusResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/identity-proof/getidentityproofstatus"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/identity-proof/{id}"},{"label":"Get matched patient","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/identity-proof/getpatient_1","routeSlug":"/openapi/identity-proof/getpatient_1","metadata":{"seo":{"title":"Get matched patient","description":"Find the matched patient for a verified identity proof. Returns the patient ID if a unique match is found. Returns 404 if no match found, or 422 if multiple matches found (duplicate email/phone in account). All required communication methods must be verified before calling this endpoint."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getPatient_1","name":"Get matched patient","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1patient/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get matched patient","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Find the matched patient for a verified identity proof. Returns the patient ID if a unique match is found. Returns 404 if no match found, or 422 if multiple matches found (duplicate email/phone in account). All required communication methods must be verified before calling this endpoint."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","required":true},{"name":"id","in":"path","schemaId":"schema_55","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1patient/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/identity-proof/{id}/patient","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"id","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/identity-proof/{id}/patient","href":"identity-proof/getpatient_1","openApiOperationId":"getPatient_1","summary":"Get matched patient"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Patient found successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientMatchResponse"}},"schemaId":"components/schemas/PatientMatchResponse"},{"code":"401","description":"Unauthorized - invalid or missing partner token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Identity proof not found, not fully verified, or no matching patient","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Multiple patients found with same email/phone - data integrity issue","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1patient/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PatientMatchResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientMatchResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/identity-proof/getpatient_1"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/identity-proof/{id}/patient"},{"label":"Send verification code","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/identity-proof/sendverification","routeSlug":"/openapi/identity-proof/sendverification","metadata":{"seo":{"title":"Send verification code","description":"Send verification code to email or phone. Does not perform patient matching - only proves contact ownership."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"sendVerification","name":"Send verification code","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Send verification code","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Send verification code to email or phone. Does not perform patient matching - only proves contact ownership."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","required":true},{"name":"id","in":"path","schemaId":"schema_55","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/SendVerificationRequest","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/Email verification","paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/SMS verification"]}},"schemaId":"components/schemas/SendVerificationRequest","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/Email verification","paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/SMS verification"],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody","description":"Provide either email or phone, not both"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/account/{accountId}/identity-proof/{id}/send","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"id","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/SendVerificationRequest","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/Email verification","paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/SMS verification"]}},"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/identity-proof/{id}/send","href":"identity-proof/sendverification","openApiOperationId":"sendVerification","summary":"Send verification code"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/SendVerificationRequest","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/Email verification","paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/SMS verification"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/SendVerificationRequest","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/Email verification","paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/SMS verification"]}},"examples":[{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Verification code sent successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SendVerificationResponse"}},"schemaId":"components/schemas/SendVerificationResponse"},{"code":"401","description":"Unauthorized - invalid or missing partner token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Identity proof not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request - missing email/phone or both provided","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/SendVerificationResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SendVerificationResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/identity-proof/sendverification"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/identity-proof/{id}/send"},{"label":"Verify code","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/identity-proof/verifycode","routeSlug":"/openapi/identity-proof/verifycode","metadata":{"seo":{"title":"Verify code","description":"Verify the code sent via email or SMS. Returns verification status and the verified contact information (email/phone)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"verifyCode","name":"Verify code","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Verify code","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Verify the code sent via email or SMS. Returns verification status and the verified contact information (email/phone)."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","required":true},{"name":"id","in":"path","schemaId":"schema_55","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/VerifyCodeRequest","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify SMS code","paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify email code"]}},"schemaId":"components/schemas/VerifyCodeRequest","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify SMS code","paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify email code"],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody","description":"Provide either email or phone (not both), along with the verification code"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/account/{accountId}/identity-proof/{id}/verify","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"id","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/VerifyCodeRequest","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify SMS code","paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify email code"]}},"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/identity-proof/{id}/verify","href":"identity-proof/verifycode","openApiOperationId":"verifyCode","summary":"Verify code"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/VerifyCodeRequest","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify SMS code","paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify email code"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/VerifyCodeRequest","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify SMS code","paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify email code"]}},"examples":[{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Verification result (success or failure)","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/VerifyCodeResponse"}},"schemaId":"components/schemas/VerifyCodeResponse"},{"code":"401","description":"Unauthorized - invalid or missing partner token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Identity proof not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request - missing email/phone/code or both email and phone provided","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/VerifyCodeResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/VerifyCodeResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/identity-proof/verifycode"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/identity-proof/{id}/verify"}],"content":{"contentType":"group","meta":{"name":"Identity Proof"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Identity Proof","showPageActions":true},{"nodeType":"markdoc","content":"Account-scoped identity verification endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/identity-proof","summary":"Create identity proof","prefix":{"name":"post","color":"post"},"badges":[],"link":"/identity-proof/createidentityproof","deprecated":false},{"title":"/partner/v2/account/{accountId}/identity-proof/{id}","summary":"Get identity proof status","prefix":{"name":"get","color":"get"},"badges":[],"link":"/identity-proof/getidentityproofstatus","deprecated":false},{"title":"/partner/v2/account/{accountId}/identity-proof/{id}/patient","summary":"Get matched patient","prefix":{"name":"get","color":"get"},"badges":[],"link":"/identity-proof/getpatient_1","deprecated":false},{"title":"/partner/v2/account/{accountId}/identity-proof/{id}/send","summary":"Send verification code","prefix":{"name":"post","color":"post"},"badges":[],"link":"/identity-proof/sendverification","deprecated":false},{"title":"/partner/v2/account/{accountId}/identity-proof/{id}/verify","summary":"Verify code","prefix":{"name":"post","color":"post"},"badges":[],"link":"/identity-proof/verifycode","deprecated":false}]}]}]}]}},{"type":"group","label":"Invoices","link":"/openapi/invoices","routeSlug":"/openapi/invoices","items":[{"label":"List invoices","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/invoices/listinvoices","routeSlug":"/openapi/invoices/listinvoices","metadata":{"seo":{"title":"List invoices","description":"Retrieve invoices for the location using cursor pagination. Optional filters: purchase order ID, status, patient ID, subscription ID."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listInvoices","name":"List invoices","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1invoice/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List invoices","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve invoices for the location using cursor pagination. Optional filters: purchase order ID, status, patient ID, subscription ID."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1invoice/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"orderId","in":"query","schemaId":"schema_55","description":"Filter by purchase order ID linked to the invoice","example":1234},{"name":"status","in":"query","schemaId":"schema_70","description":"Filter by invoice status","example":"OPEN"},{"name":"patientId","in":"query","schemaId":"schema_55","description":"Filter by patient ID","example":1234},{"name":"subscriptionId","in":"query","schemaId":"schema_55","description":"Filter by subscription ID","example":99},{"name":"sortBy","in":"query","schemaId":"schema_71","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_72","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1invoice/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/invoice","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"orderId","in":"query","example":1234,"schemaId":"schema_55"},{"name":"status","in":"query","example":"OPEN","schemaId":"schema_70"},{"name":"patientId","in":"query","example":1234,"schemaId":"schema_55"},{"name":"subscriptionId","in":"query","example":99,"schemaId":"schema_55"},{"name":"sortBy","in":"query","schemaId":"schema_71"},{"name":"sortDir","in":"query","schemaId":"schema_72"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/invoice","href":"invoices/listinvoices","openApiOperationId":"listInvoices","summary":"List invoices"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Invoices retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/InvoiceListResponse"}},"schemaId":"components/schemas/InvoiceListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1invoice/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/InvoiceListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/InvoiceListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/invoices/listinvoices"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/invoice"},{"label":"Get invoice by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/invoices/getinvoice","routeSlug":"/openapi/invoices/getinvoice","metadata":{"seo":{"title":"Get invoice by ID","description":"Retrieve a single invoice for the location, including line items."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getInvoice","name":"Get invoice by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1invoice~1{invoiceId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get invoice by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a single invoice for the location, including line items."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"invoiceId","in":"path","schemaId":"schema_55","description":"Invoice ID","required":true,"example":1234},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1invoice~1{invoiceId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/invoice/{invoiceId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"invoiceId","in":"path","required":true,"example":1234,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/invoice/{invoiceId}","href":"invoices/getinvoice","openApiOperationId":"getInvoice","summary":"Get invoice by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Invoice retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/InvoiceDTO"}},"schemaId":"components/schemas/InvoiceDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Invoice not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1invoice~1{invoiceId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/InvoiceDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/InvoiceDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/invoices/getinvoice"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/invoice/{invoiceId}"}],"content":{"contentType":"group","meta":{"name":"Invoices"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Invoices","showPageActions":true},{"nodeType":"markdoc","content":"Invoice retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location/{locationId}/invoice","summary":"List invoices","prefix":{"name":"get","color":"get"},"badges":[],"link":"/invoices/listinvoices","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/invoice/{invoiceId}","summary":"Get invoice by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/invoices/getinvoice","deprecated":false}]}]}]}]}},{"type":"group","label":"Items","link":"/openapi/items","routeSlug":"/openapi/items","items":[{"label":"List items","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/items/listitems","routeSlug":"/openapi/items/listitems","metadata":{"seo":{"title":"List items","description":"Retrieve a paginated list of items (services and supplies) for the account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listItems","name":"List items","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1item/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List items","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a paginated list of items (services and supplies) for the account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1item/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_63","description":"Filter by active status"},{"name":"type","in":"query","schemaId":"schema_73","description":"Filter by item type"},{"name":"taxable","in":"query","schemaId":"schema_63","description":"Filter by taxable status"},{"name":"categoryId","in":"query","schemaId":"schema_55","description":"Filter by category ID"},{"name":"sortBy","in":"query","schemaId":"schema_64","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_59","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1item/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/item","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"active","in":"query","schemaId":"schema_63"},{"name":"type","in":"query","schemaId":"schema_73"},{"name":"taxable","in":"query","schemaId":"schema_63"},{"name":"categoryId","in":"query","schemaId":"schema_55"},{"name":"sortBy","in":"query","schemaId":"schema_64"},{"name":"sortDir","in":"query","schemaId":"schema_59"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/item","href":"items/listitems","openApiOperationId":"listItems","summary":"List items"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Items retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ItemListResponse"}},"schemaId":"components/schemas/ItemListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1item/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ItemListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ItemListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/items/listitems"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/item"},{"label":"Get item by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/items/getitem","routeSlug":"/openapi/items/getitem","metadata":{"seo":{"title":"Get item by ID","description":"Retrieve detailed information about a specific item."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getItem","name":"Get item by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1item~1{itemId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get item by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific item."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"itemId","in":"path","schemaId":"schema_55","description":"Item ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1item~1{itemId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/item/{itemId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"itemId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/item/{itemId}","href":"items/getitem","openApiOperationId":"getItem","summary":"Get item by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Item found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ItemDTO"}},"schemaId":"components/schemas/ItemDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Item not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1item~1{itemId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ItemDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ItemDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/items/getitem"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/item/{itemId}"}],"content":{"contentType":"group","meta":{"name":"Items"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Items","showPageActions":true},{"nodeType":"markdoc","content":"Item retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/item","summary":"List items","prefix":{"name":"get","color":"get"},"badges":[],"link":"/items/listitems","deprecated":false},{"title":"/partner/v2/account/{accountId}/item/{itemId}","summary":"Get item by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/items/getitem","deprecated":false}]}]}]}]}},{"type":"group","label":"Labs","link":"/openapi/labs","routeSlug":"/openapi/labs","items":[{"label":"List labs","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/labs/listlabs","routeSlug":"/openapi/labs/listlabs","metadata":{"seo":{"title":"List labs","description":"Retrieve lab orders and results for the location. Supports filtering by patient, status, vendor, and entry date range."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listLabs","name":"List labs","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List labs","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve lab orders and results for the location. Supports filtering by patient, status, vendor, and entry date range."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"patientId","in":"query","schemaId":"schema_55","description":"Filter by patient ID"},{"name":"appointmentId","in":"query","schemaId":"schema_55","description":"Filter by appointment ID"},{"name":"status","in":"query","schemaId":"schema_74","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by status (PROCESSING, COMPLETE, ORDER_ERROR)"},"children":[]}]}]}]},{"name":"vendorType","in":"query","schemaId":"schema_75","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by vendor type (IN_HOUSE, ACCESS_MEDICAL, LABCORP, PRIME, BRIO, SPOTDX, OTHER)"},"children":[]}]}]}]},{"name":"startDate","in":"query","schemaId":"schema_61","description":"Start of entry date range (ISO 8601). Filters labs by entryOn."},{"name":"endDate","in":"query","schemaId":"schema_61","description":"End of entry date range (ISO 8601). Filters labs by entryOn."},{"name":"sortBy","in":"query","schemaId":"schema_76","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_72","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/lab","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"patientId","in":"query","schemaId":"schema_55"},{"name":"appointmentId","in":"query","schemaId":"schema_55"},{"name":"status","in":"query","schemaId":"schema_74"},{"name":"vendorType","in":"query","schemaId":"schema_75"},{"name":"startDate","in":"query","schemaId":"schema_61"},{"name":"endDate","in":"query","schemaId":"schema_61"},{"name":"sortBy","in":"query","schemaId":"schema_76"},{"name":"sortDir","in":"query","schemaId":"schema_72"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/lab","href":"labs/listlabs","openApiOperationId":"listLabs","summary":"List labs"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Labs retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/LabListResponse"}},"schemaId":"components/schemas/LabListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/LabListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/LabListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/labs/listlabs"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/lab"},{"label":"Get lab by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/labs/getlab","routeSlug":"/openapi/labs/getlab","metadata":{"seo":{"title":"Get lab by ID","description":"Retrieve detailed information about a lab including all test components."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getLab","name":"Get lab by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab~1{labId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get lab by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a lab including all test components."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"labId","in":"path","schemaId":"schema_55","description":"Lab ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab~1{labId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/lab/{labId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"labId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/lab/{labId}","href":"labs/getlab","openApiOperationId":"getLab","summary":"Get lab by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Lab found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/LabDTO"}},"schemaId":"components/schemas/LabDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Lab not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab~1{labId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/LabDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/LabDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/labs/getlab"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/lab/{labId}"},{"label":"List test components for lab","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/labs/listtestcomponents","routeSlug":"/openapi/labs/listtestcomponents","metadata":{"seo":{"title":"List test components for lab","description":"Retrieve all test components (results) for the specified lab."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listTestComponents","name":"List test components for lab","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab~1{labId}~1test-component/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List test components for lab","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve all test components (results) for the specified lab."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"labId","in":"path","schemaId":"schema_55","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab~1{labId}~1test-component/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"panelId","in":"query","schemaId":"schema_55","description":"Filter by panel ID. When set, returns only components under this panel. When omitted, no panel filter is applied."},{"name":"packetId","in":"query","schemaId":"schema_55","description":"Filter by packet ID. When set, returns only components on this packet or under panels tied to this packet."},{"name":"abnormalFlag","in":"query","schemaId":"schema_77","description":"Filter by abnormal flag"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab~1{labId}~1test-component/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/lab/{labId}/test-component","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"labId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"panelId","in":"query","schemaId":"schema_55"},{"name":"packetId","in":"query","schemaId":"schema_55"},{"name":"abnormalFlag","in":"query","schemaId":"schema_77"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/lab/{labId}/test-component","href":"labs/listtestcomponents","openApiOperationId":"listTestComponents","summary":"List test components for lab"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Test components retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TestComponentListResponse"}},"schemaId":"components/schemas/TestComponentListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Lab not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab~1{labId}~1test-component/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TestComponentListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TestComponentListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/labs/listtestcomponents"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/lab/{labId}/test-component"},{"label":"Get test component by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/labs/gettestcomponent","routeSlug":"/openapi/labs/gettestcomponent","metadata":{"seo":{"title":"Get test component by ID","description":"Retrieve detailed information about a specific test component."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getTestComponent","name":"Get test component by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab~1{labId}~1test-component~1{componentId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get test component by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific test component."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"labId","in":"path","schemaId":"schema_55","required":true},{"name":"componentId","in":"path","schemaId":"schema_55","description":"Test component ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab~1{labId}~1test-component~1{componentId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/lab/{labId}/test-component/{componentId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"labId","in":"path","required":true,"schemaId":"schema_55"},{"name":"componentId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/lab/{labId}/test-component/{componentId}","href":"labs/gettestcomponent","openApiOperationId":"getTestComponent","summary":"Get test component by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Test component found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TestComponentDTO"}},"schemaId":"components/schemas/TestComponentDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Test component not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1lab~1{labId}~1test-component~1{componentId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TestComponentDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TestComponentDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/labs/gettestcomponent"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/lab/{labId}/test-component/{componentId}"}],"content":{"contentType":"group","meta":{"name":"Labs"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Labs","showPageActions":true},{"nodeType":"markdoc","content":"Lab test component retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location/{locationId}/lab","summary":"List labs","prefix":{"name":"get","color":"get"},"badges":[],"link":"/labs/listlabs","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/lab/{labId}","summary":"Get lab by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/labs/getlab","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/lab/{labId}/test-component","summary":"List test components for lab","prefix":{"name":"get","color":"get"},"badges":[],"link":"/labs/listtestcomponents","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/lab/{labId}/test-component/{componentId}","summary":"Get test component by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/labs/gettestcomponent","deprecated":false}]}]}]}]}},{"type":"group","label":"Locations","link":"/openapi/locations","routeSlug":"/openapi/locations","items":[{"label":"List locations","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/locations/listlocations","routeSlug":"/openapi/locations/listlocations","metadata":{"seo":{"title":"List locations","description":"Retrieve a paginated list of active locations for the account. Supports filtering by name and storeId. Use storeId filter to find a location by partner's external identifier."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listLocations","name":"List locations","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List locations","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a paginated list of active locations for the account. Supports filtering by name and storeId. Use storeId filter to find a location by partner's external identifier."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"name","in":"query","schemaId":"schema_56","description":"Filter locations by name (case-insensitive contains match)","example":"Main Street"},{"name":"storeId","in":"query","schemaId":"schema_56","description":"Filter by exact storeId (partner's external identifier)","example":"STORE123"},{"name":"sortBy","in":"query","schemaId":"schema_64","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_59","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20},{"name":"active","in":"query","schemaId":"schema_60","description":"Filter by active status. If not specified, returns both active and inactive locations."}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"name","in":"query","example":"Main Street","schemaId":"schema_56"},{"name":"storeId","in":"query","example":"STORE123","schemaId":"schema_56"},{"name":"sortBy","in":"query","schemaId":"schema_64"},{"name":"sortDir","in":"query","schemaId":"schema_59"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"},{"name":"active","in":"query","schemaId":"schema_60"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location","href":"locations/listlocations","openApiOperationId":"listLocations","summary":"List locations"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Locations retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/LocationListResponse"}},"schemaId":"components/schemas/LocationListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/LocationListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/LocationListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/locations/listlocations"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location"},{"label":"Get location by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/locations/getlocation","routeSlug":"/openapi/locations/getlocation","metadata":{"seo":{"title":"Get location by ID","description":"Retrieve location information by location ID. The location must belong to the account associated with the OAuth token."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getLocation","name":"Get location by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get location by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve location information by location ID. The location must belong to the account associated with the OAuth token."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location ID","required":true,"example":12345},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"locationId","in":"path","required":true,"example":12345,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}","href":"locations/getlocation","openApiOperationId":"getLocation","summary":"Get location by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Location found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/LocationDTO"}},"schemaId":"components/schemas/LocationDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Location not found or not associated with the authorized account","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/LocationDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/LocationDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/locations/getlocation"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}"},{"label":"List location external IDs","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/locations/listlocationexternalids","routeSlug":"/openapi/locations/listlocationexternalids","metadata":{"seo":{"title":"List location external IDs","description":"Retrieve the foreign-system IDs for a location: the location-level mappings (GoHighLevel location ID and MX Merchant merchant ID) plus every patient-scoped GHL/MX Merchant ID anchored to this location (each with its patientId). Location-level rows have a null patientId. Filter by system / idType / externalId; externalId enables reverse lookup (e.g. MX Merchant customerId -> patient). Keyset-paginated."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listLocationExternalIds","name":"List location external IDs","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1external-id/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List location external IDs","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":"Retrieve the foreign-system IDs for a location: the location-level mappings (GoHighLevel location ID and MX Merchant merchant ID) plus every patient-scoped GHL/MX Merchant ID anchored to this location (each with its patientId). Location-level rows have a null patientId. Filter by system / idType / externalId; externalId enables reverse lookup (e.g. MX Merchant customerId -> patient). Keyset-paginated."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1external-id/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"system","in":"query","schemaId":"schema_78","description":"Filter by system"},{"name":"idType","in":"query","schemaId":"schema_79","description":"Filter by external ID type"},{"name":"externalId","in":"query","schemaId":"schema_80","description":"Filter by external ID value (exact match). Enables reverse lookup."},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1external-id/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/external-id","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"system","in":"query","schemaId":"schema_78"},{"name":"idType","in":"query","schemaId":"schema_79"},{"name":"externalId","in":"query","schemaId":"schema_80"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/external-id","href":"locations/listlocationexternalids","openApiOperationId":"listLocationExternalIds","summary":"List location external IDs"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"External IDs retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ExternalIdListResponse"}},"schemaId":"components/schemas/ExternalIdListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Location not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1external-id/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ExternalIdListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ExternalIdListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/locations/listlocationexternalids"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/external-id"}],"content":{"contentType":"group","meta":{"name":"Locations"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Locations","showPageActions":true},{"nodeType":"markdoc","content":"Location external-ID retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location","summary":"List locations","prefix":{"name":"get","color":"get"},"badges":[],"link":"/locations/listlocations","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}","summary":"Get location by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/locations/getlocation","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/external-id","summary":"List location external IDs","prefix":{"name":"get","color":"get"},"badges":[],"link":"/locations/listlocationexternalids","deprecated":false}]}]}]}]}},{"type":"group","label":"Notification Groups","link":"/openapi/notification-groups","routeSlug":"/openapi/notification-groups","items":[{"label":"List notification groups","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/notification-groups/listnotificationgroups","routeSlug":"/openapi/notification-groups/listnotificationgroups","metadata":{"seo":{"title":"List notification groups","description":"Retrieve a paginated list of notification groups for the account. Each group ties together related notifications for an appointment, form, or payment."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listNotificationGroups","name":"List notification groups","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification-group/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List notification groups","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a paginated list of notification groups for the account. Each group ties together related notifications for an appointment, form, or payment."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification-group/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"startDate","in":"query","schemaId":"schema_61","description":"Start of date range filter on group creation time (createdAt). ISO 8601 format.","example":"2025-01-01T00:00:00Z"},{"name":"endDate","in":"query","schemaId":"schema_61","description":"End of date range filter on group creation time (createdAt). ISO 8601 format.","example":"2025-01-31T23:59:59Z"},{"name":"cursor","in":"query","schemaId":"schema_61","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_81","description":"Number of results per page (1-1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification-group/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/notification-group","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"startDate","in":"query","example":"2025-01-01T00:00:00Z","schemaId":"schema_61"},{"name":"endDate","in":"query","example":"2025-01-31T23:59:59Z","schemaId":"schema_61"},{"name":"cursor","in":"query","schemaId":"schema_61"},{"name":"limit","in":"query","example":20,"schemaId":"schema_81"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/notification-group","href":"notification-groups/listnotificationgroups","openApiOperationId":"listNotificationGroups","summary":"List notification groups"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Notification groups retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/NotificationGroupListResponse"}},"schemaId":"components/schemas/NotificationGroupListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification-group/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/NotificationGroupListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/NotificationGroupListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/notification-groups/listnotificationgroups"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/notification-group"},{"label":"Get notification group by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/notification-groups/getnotificationgroup","routeSlug":"/openapi/notification-groups/getnotificationgroup","metadata":{"seo":{"title":"Get notification group by ID","description":"Retrieve detailed information about a specific notification group."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getNotificationGroup","name":"Get notification group by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification-group~1{groupId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get notification group by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific notification group."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"groupId","in":"path","schemaId":"schema_55","description":"Notification group ID","required":true,"example":12345},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification-group~1{groupId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/notification-group/{groupId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"groupId","in":"path","required":true,"example":12345,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/notification-group/{groupId}","href":"notification-groups/getnotificationgroup","openApiOperationId":"getNotificationGroup","summary":"Get notification group by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Notification group found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/NotificationGroupDTO"}},"schemaId":"components/schemas/NotificationGroupDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Notification group not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification-group~1{groupId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/NotificationGroupDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/NotificationGroupDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/notification-groups/getnotificationgroup"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/notification-group/{groupId}"}],"content":{"contentType":"group","meta":{"name":"Notification Groups"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Notification Groups","showPageActions":true},{"nodeType":"markdoc","content":"Notification group retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/notification-group","summary":"List notification groups","prefix":{"name":"get","color":"get"},"badges":[],"link":"/notification-groups/listnotificationgroups","deprecated":false},{"title":"/partner/v2/account/{accountId}/notification-group/{groupId}","summary":"Get notification group by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/notification-groups/getnotificationgroup","deprecated":false}]}]}]}]}},{"type":"group","label":"Notifications","link":"/openapi/notifications","routeSlug":"/openapi/notifications","items":[{"label":"List notifications","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/notifications/listnotifications","routeSlug":"/openapi/notifications/listnotifications","metadata":{"seo":{"title":"List notifications","description":"Retrieve a paginated list of notifications for the account. Supports filtering by patient, notification group, type, status, and date range. Each notification tracks email and SMS delivery status independently."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listNotifications","name":"List notifications","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List notifications","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a paginated list of notifications for the account. Supports filtering by patient, notification group, type, status, and date range. Each notification tracks email and SMS delivery status independently."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"patientId","in":"query","schemaId":"schema_55","description":"Filter by patient ID"},{"name":"notificationGroupId","in":"query","schemaId":"schema_55","description":"Filter by notification group ID"},{"name":"notification_type","in":"query","schemaId":"schema_82","description":"Filter by notification type"},{"name":"emailStatus","in":"query","schemaId":"schema_83","description":"Filter by email delivery status"},{"name":"smsStatus","in":"query","schemaId":"schema_83","description":"Filter by SMS delivery status"},{"name":"startDate","in":"query","schemaId":"schema_61","description":"Start of date range filter on scheduled send time (scheduledAt). ISO 8601 format.","example":"2025-01-01T00:00:00Z"},{"name":"endDate","in":"query","schemaId":"schema_61","description":"End of date range filter on scheduled send time (scheduledAt). ISO 8601 format.","example":"2025-01-31T23:59:59Z"},{"name":"cursor","in":"query","schemaId":"schema_61","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_81","description":"Number of results per page (1-1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/notification","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"patientId","in":"query","schemaId":"schema_55"},{"name":"notificationGroupId","in":"query","schemaId":"schema_55"},{"name":"notification_type","in":"query","schemaId":"schema_82"},{"name":"emailStatus","in":"query","schemaId":"schema_83"},{"name":"smsStatus","in":"query","schemaId":"schema_83"},{"name":"startDate","in":"query","example":"2025-01-01T00:00:00Z","schemaId":"schema_61"},{"name":"endDate","in":"query","example":"2025-01-31T23:59:59Z","schemaId":"schema_61"},{"name":"cursor","in":"query","schemaId":"schema_61"},{"name":"limit","in":"query","example":20,"schemaId":"schema_81"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/notification","href":"notifications/listnotifications","openApiOperationId":"listNotifications","summary":"List notifications"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Notifications retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/NotificationListResponse"}},"schemaId":"components/schemas/NotificationListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/NotificationListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/NotificationListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/notifications/listnotifications"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/notification"},{"label":"Get notification by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/notifications/getnotification","routeSlug":"/openapi/notifications/getnotification","metadata":{"seo":{"title":"Get notification by ID","description":"Retrieve detailed information about a specific notification."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getNotification","name":"Get notification by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification~1{notificationId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get notification by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific notification."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"notificationId","in":"path","schemaId":"schema_55","description":"Notification ID","required":true,"example":12345},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification~1{notificationId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/notification/{notificationId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"notificationId","in":"path","required":true,"example":12345,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/notification/{notificationId}","href":"notifications/getnotification","openApiOperationId":"getNotification","summary":"Get notification by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Notification found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/NotificationDTO"}},"schemaId":"components/schemas/NotificationDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Notification not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1notification~1{notificationId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/NotificationDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/NotificationDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/notifications/getnotification"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/notification/{notificationId}"}],"content":{"contentType":"group","meta":{"name":"Notifications"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Notifications","showPageActions":true},{"nodeType":"markdoc","content":"Notification retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/notification","summary":"List notifications","prefix":{"name":"get","color":"get"},"badges":[],"link":"/notifications/listnotifications","deprecated":false},{"title":"/partner/v2/account/{accountId}/notification/{notificationId}","summary":"Get notification by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/notifications/getnotification","deprecated":false}]}]}]}]}},{"type":"group","label":"Orders","link":"/openapi/orders","routeSlug":"/openapi/orders","items":[{"label":"List orders","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/orders/listorders","routeSlug":"/openapi/orders/listorders","metadata":{"seo":{"title":"List orders","description":"Retrieve purchase orders for the location using cursor pagination. Optional filters: status, patient ID, appointment ID. Results are ordered by creation time; use sortDir for ascending or descending order."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listOrders","name":"List orders","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1order/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List orders","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve purchase orders for the location using cursor pagination. Optional filters: status, patient ID, appointment ID. Results are ordered by creation time; use sortDir for ascending or descending order."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1order/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"status","in":"query","schemaId":"schema_84","description":"Filter by order status","example":"PENDING"},{"name":"patientId","in":"query","schemaId":"schema_55","description":"Filter by patient ID","example":1234},{"name":"appointmentId","in":"query","schemaId":"schema_55","description":"Filter by appointment ID","example":5678},{"name":"sortDir","in":"query","schemaId":"schema_72","description":"Sort direction for creation time"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1order/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/order","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"status","in":"query","example":"PENDING","schemaId":"schema_84"},{"name":"patientId","in":"query","example":1234,"schemaId":"schema_55"},{"name":"appointmentId","in":"query","example":5678,"schemaId":"schema_55"},{"name":"sortDir","in":"query","schemaId":"schema_72"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/order","href":"orders/listorders","openApiOperationId":"listOrders","summary":"List orders"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Orders retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OrderListResponse"}},"schemaId":"components/schemas/OrderListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1order/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/OrderListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OrderListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/orders/listorders"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/order"},{"label":"Get order by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/orders/getorder","routeSlug":"/openapi/orders/getorder","metadata":{"seo":{"title":"Get order by ID","description":"Retrieve a single purchase order for the location, including line items and subscriptions."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getOrder","name":"Get order by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1order~1{orderId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get order by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a single purchase order for the location, including line items and subscriptions."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"orderId","in":"path","schemaId":"schema_55","description":"Order ID","required":true,"example":1234},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1order~1{orderId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/order/{orderId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"orderId","in":"path","required":true,"example":1234,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/order/{orderId}","href":"orders/getorder","openApiOperationId":"getOrder","summary":"Get order by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Order retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OrderDTO"}},"schemaId":"components/schemas/OrderDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Order not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1order~1{orderId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/OrderDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/OrderDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/orders/getorder"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/order/{orderId}"}],"content":{"contentType":"group","meta":{"name":"Orders"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Orders","showPageActions":true},{"nodeType":"markdoc","content":"Purchase order retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location/{locationId}/order","summary":"List orders","prefix":{"name":"get","color":"get"},"badges":[],"link":"/orders/listorders","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/order/{orderId}","summary":"Get order by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/orders/getorder","deprecated":false}]}]}]}]}},{"type":"group","label":"Patients","link":"/openapi/patients","routeSlug":"/openapi/patients","items":[{"label":"List patients","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/listpatients","routeSlug":"/openapi/patients/listpatients","metadata":{"seo":{"title":"List patients","description":"Retrieve a paginated list of patients for the account. Supports filtering by name/email/active status and cursor-based pagination."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listPatients","name":"List patients","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List patients","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a paginated list of patients for the account. Supports filtering by name/email/active status and cursor-based pagination."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"firstName","in":"query","schemaId":"schema_56","description":"Filter patients by first name (case-insensitive contains match)","example":"John"},{"name":"lastName","in":"query","schemaId":"schema_56","description":"Filter patients by last name (case-insensitive contains match)","example":"Smith"},{"name":"email","in":"query","schemaId":"schema_85","description":"Filter patients by email (case-insensitive contains match)","example":"example@lobbie.com"},{"name":"active","in":"query","schemaId":"schema_63","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter patients by active status. Omit to return patients regardless of status; active=false returns archived or merged-away records."},"children":[]}]}]}],"example":true},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/patient","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"firstName","in":"query","example":"John","schemaId":"schema_56"},{"name":"lastName","in":"query","example":"Smith","schemaId":"schema_56"},{"name":"email","in":"query","example":"example@lobbie.com","schemaId":"schema_85"},{"name":"active","in":"query","example":true,"schemaId":"schema_63"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/patient","href":"patients/listpatients","openApiOperationId":"listPatients","summary":"List patients"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Patients retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientListResponse"}},"schemaId":"components/schemas/PatientListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PatientListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/listpatients"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient"},{"label":"Create patient","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/createpatient","routeSlug":"/openapi/patients/createpatient","metadata":{"seo":{"title":"Create patient","description":"Create a new patient for the account. The account must match the OAuth token context."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createPatient","name":"Create patient","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create patient","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new patient for the account. The account must match the OAuth token context."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreatePatientRequest"}},"schemaId":"components/schemas/CreatePatientRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/account/{accountId}/patient","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreatePatientRequest"}},"responseCodes":["201","401","404","409","422"],"pointer":"/partner/v2/account/{accountId}/patient","href":"patients/createpatient","openApiOperationId":"createPatient","summary":"Create patient"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/CreatePatientRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreatePatientRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Patient created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientResponse"}},"schemaId":"components/schemas/PatientResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"409","description":"A patient with this email already exists in the account","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request data","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/PatientResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"409","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/createpatient"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient"},{"label":"List patient category enrollments (account-wide)","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/listaccountpatientcategories","routeSlug":"/openapi/patients/listaccountpatientcategories","metadata":{"seo":{"title":"List patient category enrollments (account-wide)","description":"Retrieve patient-category enrollments across the account, filterable by category and current CRM status. Each row carries the patientId and assignedAt (when the patient entered the current status). Use /patient/{patientId} to hydrate the patient."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listAccountPatientCategories","name":"List patient category enrollments (account-wide)","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient-category/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List patient category enrollments (account-wide)","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":"Retrieve patient-category enrollments across the account, filterable by category and current CRM status. Each row carries the patientId and assignedAt (when the patient entered the current status). Use /patient/{patientId} to hydrate the patient."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient-category/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"categoryId","in":"query","schemaId":"schema_55","description":"Filter by category ID"},{"name":"crmStatusId","in":"query","schemaId":"schema_55","description":"Filter by current CRM status ID"},{"name":"active","in":"query","schemaId":"schema_63","description":"Filter by active status (true/false)"},{"name":"sortBy","in":"query","schemaId":"schema_86","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_72","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient-category/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/patient-category","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"categoryId","in":"query","schemaId":"schema_55"},{"name":"crmStatusId","in":"query","schemaId":"schema_55"},{"name":"active","in":"query","schemaId":"schema_63"},{"name":"sortBy","in":"query","schemaId":"schema_86"},{"name":"sortDir","in":"query","schemaId":"schema_72"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","422"],"pointer":"/partner/v2/account/{accountId}/patient-category","href":"patients/listaccountpatientcategories","openApiOperationId":"listAccountPatientCategories","summary":"List patient category enrollments (account-wide)"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Patient category enrollments retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientCategoryListResponse"}},"schemaId":"components/schemas/PatientCategoryListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient-category/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PatientCategoryListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientCategoryListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/listaccountpatientcategories"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient-category"},{"label":"Get patient by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/getpatient","routeSlug":"/openapi/patients/getpatient","metadata":{"seo":{"title":"Get patient by ID","description":"Retrieve patient information by patient ID. The patient must belong to the authorized account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getPatient","name":"Get patient by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get patient by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve patient information by patient ID. The patient must belong to the authorized account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID","required":true,"example":12345},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/patient/{patientId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"example":12345,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}","href":"patients/getpatient","openApiOperationId":"getPatient","summary":"Get patient by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Patient found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientResponse"}},"schemaId":"components/schemas/PatientResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Patient not found or not associated with the authorized account","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PatientResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/getpatient"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}"},{"label":"Update patient","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/updatepatient","routeSlug":"/openapi/patients/updatepatient","metadata":{"seo":{"title":"Update patient","description":"Update patient information by patient ID. Only provided fields will be updated. The patient must belong to the authorized account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updatePatient","name":"Update patient","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update patient","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update patient information by patient ID. Only provided fields will be updated. The patient must belong to the authorized account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID","required":true,"example":12345},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdatePatientRequest"}},"schemaId":"components/schemas/UpdatePatientRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/partner/v2/account/{accountId}/patient/{patientId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"example":12345,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UpdatePatientRequest"}},"responseCodes":["200","401","404","409","422"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}","href":"patients/updatepatient","openApiOperationId":"updatePatient","summary":"Update patient"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/UpdatePatientRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdatePatientRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Patient updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientResponse"}},"schemaId":"components/schemas/PatientResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Patient not found or not associated with the authorized account","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"409","description":"A patient with this email already exists in the account","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request data","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PatientResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"409","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/updatepatient"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}"},{"label":"List patient category assignments","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/listpatientcategories","routeSlug":"/openapi/patients/listpatientcategories","metadata":{"seo":{"title":"List patient category assignments","description":"Retrieve the patient's category assignments. By default returns all assignments; use the 'active' filter to narrow results."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listPatientCategories","name":"List patient category assignments","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1category/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List patient category assignments","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve the patient's category assignments. By default returns all assignments; use the 'active' filter to narrow results."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID (AccountPatient id)","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1category/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_63","description":"Filter by active status (true/false)"},{"name":"categoryId","in":"query","schemaId":"schema_55","description":"Filter by category ID"},{"name":"sortBy","in":"query","schemaId":"schema_86","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_72","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1category/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/patient/{patientId}/category","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"active","in":"query","schemaId":"schema_63"},{"name":"categoryId","in":"query","schemaId":"schema_55"},{"name":"sortBy","in":"query","schemaId":"schema_86"},{"name":"sortDir","in":"query","schemaId":"schema_72"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}/category","href":"patients/listpatientcategories","openApiOperationId":"listPatientCategories","summary":"List patient category assignments"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Patient categories retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientCategoryListResponse"}},"schemaId":"components/schemas/PatientCategoryListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Patient not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1category/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PatientCategoryListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientCategoryListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/listpatientcategories"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}/category"},{"label":"List patient category transitions","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/listcategorytransitions","routeSlug":"/openapi/patients/listcategorytransitions","metadata":{"seo":{"title":"List patient category transitions","description":"Retrieve the category transition history for the patient sorted by transitionedAt."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listCategoryTransitions","name":"List patient category transitions","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1category~1transition/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List patient category transitions","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve the category transition history for the patient sorted by transitionedAt. "},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID (AccountPatient id)","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1category~1transition/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"startDate","in":"query","schemaId":"schema_61","description":"Only transitions with transitionedAt on or after this time (ISO 8601)","example":"2025-01-01T00:00:00Z"},{"name":"endDate","in":"query","schemaId":"schema_61","description":"Only transitions with transitionedAt on or before this time (ISO 8601)","example":"2025-01-31T00:00:00Z"},{"name":"sortDir","in":"query","schemaId":"schema_72","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1category~1transition/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/patient/{patientId}/category/transition","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"startDate","in":"query","example":"2025-01-01T00:00:00Z","schemaId":"schema_61"},{"name":"endDate","in":"query","example":"2025-01-31T00:00:00Z","schemaId":"schema_61"},{"name":"sortDir","in":"query","schemaId":"schema_72"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}/category/transition","href":"patients/listcategorytransitions","openApiOperationId":"listCategoryTransitions","summary":"List patient category transitions"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Category transitions retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CategoryTransitionListResponse"}},"schemaId":"components/schemas/CategoryTransitionListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Patient not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1category~1transition/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CategoryTransitionListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CategoryTransitionListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/listcategorytransitions"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}/category/transition"},{"label":"Get category transition by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/getcategorytransition","routeSlug":"/openapi/patients/getcategorytransition","metadata":{"seo":{"title":"Get category transition by ID","description":"Retrieve detailed information about a specific category transition."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getCategoryTransition","name":"Get category transition by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1category~1transition~1{transitionId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get category transition by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific category transition."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID (AccountPatient id)","required":true},{"name":"transitionId","in":"path","schemaId":"schema_55","description":"Transition ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1category~1transition~1{transitionId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/patient/{patientId}/category/transition/{transitionId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"schemaId":"schema_55"},{"name":"transitionId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}/category/transition/{transitionId}","href":"patients/getcategorytransition","openApiOperationId":"getCategoryTransition","summary":"Get category transition by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Category transition found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CategoryTransitionDTO"}},"schemaId":"components/schemas/CategoryTransitionDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Transition not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1category~1transition~1{transitionId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CategoryTransitionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CategoryTransitionDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/getcategorytransition"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}/category/transition/{transitionId}"},{"label":"List patient external IDs","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/listpatientexternalids","routeSlug":"/openapi/patients/listpatientexternalids","metadata":{"seo":{"title":"List patient external IDs","description":"Retrieve the foreign-system IDs (GoHighLevel contact/opportunity, MX Merchant customer) Lobbie maintains for the patient. Each row includes the Lobbie locationId it belongs to. Filter by system / idType / externalId; keyset-paginated."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listPatientExternalIds","name":"List patient external IDs","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1external-id/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List patient external IDs","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve the foreign-system IDs (GoHighLevel contact/opportunity, MX Merchant customer) Lobbie maintains for the patient. Each row includes the Lobbie locationId it belongs to. Filter by system / idType / externalId; keyset-paginated."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID (AccountPatient id)","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1external-id/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"system","in":"query","schemaId":"schema_78","description":"Filter by system"},{"name":"idType","in":"query","schemaId":"schema_87","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by external ID type. Only patient-scoped types are valid here; the location-level types (LOCATION_ID, MERCHANT_ID) are served by the location external-id endpoint."},"children":[]}]}]}]},{"name":"externalId","in":"query","schemaId":"schema_80","description":"Filter by external ID value (exact match)"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1external-id/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/patient/{patientId}/external-id","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"system","in":"query","schemaId":"schema_78"},{"name":"idType","in":"query","schemaId":"schema_87"},{"name":"externalId","in":"query","schemaId":"schema_80"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}/external-id","href":"patients/listpatientexternalids","openApiOperationId":"listPatientExternalIds","summary":"List patient external IDs"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"External IDs retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ExternalIdListResponse"}},"schemaId":"components/schemas/ExternalIdListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Patient not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1external-id/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ExternalIdListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ExternalIdListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/listpatientexternalids"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}/external-id"},{"label":"List patient allergies","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/listallergies","routeSlug":"/openapi/patients/listallergies","metadata":{"seo":{"title":"List patient allergies","description":"Retrieve all allergies for a patient including severity, reactions, and status."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listAllergies","name":"List patient allergies","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1health-profile~1allergies/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List patient allergies","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve all allergies for a patient including severity, reactions, and status."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID","required":true,"example":67890},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1health-profile~1allergies/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_60","description":"Filter by active status. If not specified, returns both active and inactive appointment types."},{"name":"status","in":"query","schemaId":"schema_88","description":"Filter by status (ACTIVE, RESOLVED, UNKNOWN)"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1health-profile~1allergies/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/patient/{patientId}/health-profile/allergies","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"example":67890,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"active","in":"query","schemaId":"schema_60"},{"name":"status","in":"query","schemaId":"schema_88"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}/health-profile/allergies","href":"patients/listallergies","openApiOperationId":"listAllergies","summary":"List patient allergies"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Allergies retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AllergyListResponse"}},"schemaId":"components/schemas/AllergyListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Patient not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1health-profile~1allergies/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AllergyListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AllergyListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/listallergies"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}/health-profile/allergies"},{"label":"List patient medications","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/listmedications","routeSlug":"/openapi/patients/listmedications","metadata":{"seo":{"title":"List patient medications","description":"Retrieve all medications for a patient including dosage instructions and status."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listMedications","name":"List patient medications","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1health-profile~1medications/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List patient medications","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve all medications for a patient including dosage instructions and status."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID","required":true,"example":67890},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1health-profile~1medications/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_60","description":"Filter by active status. If not specified, returns both active and inactive appointment types."},{"name":"status","in":"query","schemaId":"schema_89","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by status (ACTIVE, ON_HOLD, DISCONTINUED, COMPLETED, UNKNOWN)"},"children":[]}]}]}]}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1health-profile~1medications/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/patient/{patientId}/health-profile/medications","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"example":67890,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"active","in":"query","schemaId":"schema_60"},{"name":"status","in":"query","schemaId":"schema_89"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}/health-profile/medications","href":"patients/listmedications","openApiOperationId":"listMedications","summary":"List patient medications"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Medications retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/MedicationListResponse"}},"schemaId":"components/schemas/MedicationListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Patient not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1health-profile~1medications/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/MedicationListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/MedicationListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/listmedications"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}/health-profile/medications"},{"label":"List patient problems/diagnoses","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/listproblems","routeSlug":"/openapi/patients/listproblems","metadata":{"seo":{"title":"List patient problems/diagnoses","description":"Retrieve all problems (diagnoses) for a patient including ICD-10 codes and status."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listProblems","name":"List patient problems/diagnoses","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1health-profile~1problems/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List patient problems/diagnoses","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve all problems (diagnoses) for a patient including ICD-10 codes and status."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID","required":true,"example":67890},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1health-profile~1problems/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_60","description":"Filter by active status. If not specified, returns both active and inactive appointment types."},{"name":"status","in":"query","schemaId":"schema_88","description":"Filter by status (ACTIVE, RESOLVED, UNKNOWN)"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1health-profile~1problems/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/patient/{patientId}/health-profile/problems","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"example":67890,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"active","in":"query","schemaId":"schema_60"},{"name":"status","in":"query","schemaId":"schema_88"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}/health-profile/problems","href":"patients/listproblems","openApiOperationId":"listProblems","summary":"List patient problems/diagnoses"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Problems retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ProblemListResponse"}},"schemaId":"components/schemas/ProblemListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Patient not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1health-profile~1problems/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ProblemListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ProblemListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/listproblems"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}/health-profile/problems"},{"label":"List patient tags","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/listtags","routeSlug":"/openapi/patients/listtags","metadata":{"seo":{"title":"List patient tags","description":"Retrieve the patient's active tags, ordered by display order. Cursor-based pagination."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listTags","name":"List patient tags","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List patient tags","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve the patient's active tags, ordered by display order. Cursor-based pagination."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID (AccountPatient id)","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"sortDir","in":"query","schemaId":"schema_59","description":"Sort direction by display order"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/patient/{patientId}/tag","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"sortDir","in":"query","schemaId":"schema_59"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}/tag","href":"patients/listtags","openApiOperationId":"listTags","summary":"List patient tags"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tags retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TagListResponse"}},"schemaId":"components/schemas/TagListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Patient not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TagListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TagListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/listtags"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}/tag"},{"label":"Create patient tag","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/createtag","routeSlug":"/openapi/patients/createtag","metadata":{"seo":{"title":"Create patient tag","description":"Create a new tag on the patient. Color must be one of the allowed palette values; defaults to #C1E4FF if omitted."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createTag","name":"Create patient tag","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create patient tag","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":"Create a new tag on the patient. Color must be one of the allowed palette values; defaults to #C1E4FF if omitted."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID (AccountPatient id)","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateTagRequest"}},"schemaId":"components/schemas/CreateTagRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/account/{accountId}/patient/{patientId}/tag","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateTagRequest"}},"responseCodes":["201","401","404","422"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}/tag","href":"patients/createtag","openApiOperationId":"createTag","summary":"Create patient tag"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/CreateTagRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateTagRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Tag created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TagDTO"}},"schemaId":"components/schemas/TagDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Patient not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request data","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/TagDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TagDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/createtag"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}/tag"},{"label":"Delete patient tag","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/deletetag","routeSlug":"/openapi/patients/deletetag","metadata":{"seo":{"title":"Delete patient tag","description":"Remove a tag from the patient. This is a soft delete; the tag stops appearing in listings."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"deleteTag","name":"Delete patient tag","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag~1{tagId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete patient tag","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Remove a tag from the patient. This is a soft delete; the tag stops appearing in listings."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID (AccountPatient id)","required":true},{"name":"tagId","in":"path","schemaId":"schema_55","description":"Tag ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag~1{tagId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/partner/v2/account/{accountId}/patient/{patientId}/tag/{tagId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"schemaId":"schema_55"},{"name":"tagId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["204","401","404"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}/tag/{tagId}","href":"patients/deletetag","openApiOperationId":"deleteTag","summary":"Delete patient tag"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204","description":"Tag deleted successfully"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Tag or patient not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag~1{tagId}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"204"},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/deletetag"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}/tag/{tagId}"},{"label":"Get patient tag by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/gettag","routeSlug":"/openapi/patients/gettag","metadata":{"seo":{"title":"Get patient tag by ID","description":"Retrieve a single tag belonging to the patient."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getTag","name":"Get patient tag by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag~1{tagId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get patient tag by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a single tag belonging to the patient."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_55","description":"Patient ID (AccountPatient id)","required":true},{"name":"tagId","in":"path","schemaId":"schema_55","description":"Tag ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag~1{tagId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/patient/{patientId}/tag/{tagId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"schemaId":"schema_55"},{"name":"tagId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/patient/{patientId}/tag/{tagId}","href":"patients/gettag","openApiOperationId":"getTag","summary":"Get patient tag by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tag found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TagDTO"}},"schemaId":"components/schemas/TagDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Tag or patient not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1patient~1{patientId}~1tag~1{tagId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TagDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TagDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/gettag"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/patient/{patientId}/tag/{tagId}"}],"content":{"contentType":"group","meta":{"name":"Patients"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Patients","showPageActions":true},{"nodeType":"markdoc","content":"Patient category retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/patient","summary":"List patients","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/listpatients","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient","summary":"Create patient","prefix":{"name":"post","color":"post"},"badges":[],"link":"/patients/createpatient","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient-category","summary":"List patient category enrollments (account-wide)","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/listaccountpatientcategories","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}","summary":"Get patient by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/getpatient","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}","summary":"Update patient","prefix":{"name":"put","color":"put"},"badges":[],"link":"/patients/updatepatient","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}/category","summary":"List patient category assignments","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/listpatientcategories","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}/category/transition","summary":"List patient category transitions","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/listcategorytransitions","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}/category/transition/{transitionId}","summary":"Get category transition by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/getcategorytransition","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}/external-id","summary":"List patient external IDs","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/listpatientexternalids","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}/health-profile/allergies","summary":"List patient allergies","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/listallergies","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}/health-profile/medications","summary":"List patient medications","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/listmedications","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}/health-profile/problems","summary":"List patient problems/diagnoses","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/listproblems","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}/tag","summary":"List patient tags","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/listtags","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}/tag","summary":"Create patient tag","prefix":{"name":"post","color":"post"},"badges":[],"link":"/patients/createtag","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}/tag/{tagId}","summary":"Delete patient tag","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/patients/deletetag","deprecated":false},{"title":"/partner/v2/account/{accountId}/patient/{patientId}/tag/{tagId}","summary":"Get patient tag by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/gettag","deprecated":false}]}]}]}]}},{"type":"group","label":"Payment Attempts","link":"/openapi/payment-attempts","routeSlug":"/openapi/payment-attempts","items":[{"label":"List payment attempts","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/payment-attempts/listpaymentattempts","routeSlug":"/openapi/payment-attempts/listpaymentattempts","metadata":{"seo":{"title":"List payment attempts","description":"Retrieve payment attempts for the location using cursor pagination. Optional filters: status, invoice ID, purchase order ID, patient ID, and createdOn bounds (startDate, endDate, ISO-8601 inclusive)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listPaymentAttempts","name":"List payment attempts","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment-attempt/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List payment attempts","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve payment attempts for the location using cursor pagination. Optional filters: status, invoice ID, purchase order ID, patient ID, and createdOn bounds (startDate, endDate, ISO-8601 inclusive)."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment-attempt/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"status","in":"query","schemaId":"schema_90","description":"Filter by payment attempt status"},{"name":"invoiceId","in":"query","schemaId":"schema_55","description":"Filter by invoice ID","example":1001},{"name":"orderId","in":"query","schemaId":"schema_55","description":"Filter by purchase order ID linked to the invoice","example":2002},{"name":"patientId","in":"query","schemaId":"schema_55","description":"Filter by patient ID","example":3003},{"name":"startDate","in":"query","schemaId":"schema_61","description":"Inclusive lower bound on createdAt (ISO-8601 datetime, e.g. UTC)","example":"2025-01-01T00:00:00Z"},{"name":"endDate","in":"query","schemaId":"schema_61","description":"Inclusive upper bound on createdAt (ISO-8601 datetime, e.g. UTC)","example":"2025-12-31T23:59:59Z"},{"name":"sortBy","in":"query","schemaId":"schema_91","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_92","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment-attempt/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/payment-attempt","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"status","in":"query","example":"PENDING","schemaId":"schema_90"},{"name":"invoiceId","in":"query","example":1001,"schemaId":"schema_55"},{"name":"orderId","in":"query","example":2002,"schemaId":"schema_55"},{"name":"patientId","in":"query","example":3003,"schemaId":"schema_55"},{"name":"startDate","in":"query","example":"2025-01-01T00:00:00Z","schemaId":"schema_61"},{"name":"endDate","in":"query","example":"2025-12-31T23:59:59Z","schemaId":"schema_61"},{"name":"sortBy","in":"query","schemaId":"schema_91"},{"name":"sortDir","in":"query","schemaId":"schema_92"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/payment-attempt","href":"payment-attempts/listpaymentattempts","openApiOperationId":"listPaymentAttempts","summary":"List payment attempts"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Payment attempts retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentAttemptListResponse"}},"schemaId":"components/schemas/PaymentAttemptListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment-attempt/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaymentAttemptListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentAttemptListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/payment-attempts/listpaymentattempts"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/payment-attempt"},{"label":"Get payment attempt by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/payment-attempts/getpaymentattempt","routeSlug":"/openapi/payment-attempts/getpaymentattempt","metadata":{"seo":{"title":"Get payment attempt by ID","description":"Retrieve a single payment attempt for the location."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getPaymentAttempt","name":"Get payment attempt by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment-attempt~1{paymentAttemptId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get payment attempt by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a single payment attempt for the location."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"paymentAttemptId","in":"path","schemaId":"schema_55","description":"Payment attempt ID","required":true,"example":42},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment-attempt~1{paymentAttemptId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/payment-attempt/{paymentAttemptId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"paymentAttemptId","in":"path","required":true,"example":42,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/payment-attempt/{paymentAttemptId}","href":"payment-attempts/getpaymentattempt","openApiOperationId":"getPaymentAttempt","summary":"Get payment attempt by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Payment attempt found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentAttemptDTO"}},"schemaId":"components/schemas/PaymentAttemptDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Payment attempt not found for this location","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment-attempt~1{paymentAttemptId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaymentAttemptDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentAttemptDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/payment-attempts/getpaymentattempt"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/payment-attempt/{paymentAttemptId}"}],"content":{"contentType":"group","meta":{"name":"Payment Attempts"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Payment Attempts","showPageActions":true},{"nodeType":"markdoc","content":"Payment attempt retrieval for a location"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location/{locationId}/payment-attempt","summary":"List payment attempts","prefix":{"name":"get","color":"get"},"badges":[],"link":"/payment-attempts/listpaymentattempts","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/payment-attempt/{paymentAttemptId}","summary":"Get payment attempt by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/payment-attempts/getpaymentattempt","deprecated":false}]}]}]}]}},{"type":"group","label":"Payments","link":"/openapi/payments","routeSlug":"/openapi/payments","items":[{"label":"List payments","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/payments/listpayments","routeSlug":"/openapi/payments/listpayments","metadata":{"seo":{"title":"List payments","description":"Retrieve payments for the location using cursor pagination. Optional filters: posted-on date range (startDate, endDate on postedOn), invoice ID, purchase order ID, and patient ID."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listPayments","name":"List payments","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List payments","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve payments for the location using cursor pagination. Optional filters: posted-on date range (startDate, endDate on postedOn), invoice ID, purchase order ID, and patient ID."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"invoiceId","in":"query","schemaId":"schema_55","description":"Filter by invoice ID","example":1234},{"name":"orderId","in":"query","schemaId":"schema_55","description":"Filter by purchase order ID linked to the invoice","example":1234},{"name":"patientId","in":"query","schemaId":"schema_55","description":"Filter by patient ID","example":1234},{"name":"startDate","in":"query","schemaId":"schema_61","description":"Start of date range filter on posted time (postedOn). ISO 8601 format.","example":"2025-01-01T00:00:00Z"},{"name":"endDate","in":"query","schemaId":"schema_61","description":"End of date range filter on posted time (postedOn). ISO 8601 format.","example":"2025-01-31T00:00:00Z"},{"name":"sortBy","in":"query","schemaId":"schema_93","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_72","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/payment","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"invoiceId","in":"query","example":1234,"schemaId":"schema_55"},{"name":"orderId","in":"query","example":1234,"schemaId":"schema_55"},{"name":"patientId","in":"query","example":1234,"schemaId":"schema_55"},{"name":"startDate","in":"query","example":"2025-01-01T00:00:00Z","schemaId":"schema_61"},{"name":"endDate","in":"query","example":"2025-01-31T00:00:00Z","schemaId":"schema_61"},{"name":"sortBy","in":"query","schemaId":"schema_93"},{"name":"sortDir","in":"query","schemaId":"schema_72"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/payment","href":"payments/listpayments","openApiOperationId":"listPayments","summary":"List payments"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Payments retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentListResponse"}},"schemaId":"components/schemas/PaymentListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaymentListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/payments/listpayments"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/payment"},{"label":"Get payment by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/payments/getpayment","routeSlug":"/openapi/payments/getpayment","metadata":{"seo":{"title":"Get payment by ID","description":"Retrieve a single payment for the location."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getPayment","name":"Get payment by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment~1{paymentId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get payment by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a single payment for the location."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"paymentId","in":"path","schemaId":"schema_55","description":"Payment ID","required":true,"example":42},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment~1{paymentId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/payment/{paymentId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"paymentId","in":"path","required":true,"example":42,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/payment/{paymentId}","href":"payments/getpayment","openApiOperationId":"getPayment","summary":"Get payment by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Payment found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentDTO"}},"schemaId":"components/schemas/PaymentDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Payment not found for this location","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1payment~1{paymentId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PaymentDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PaymentDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/payments/getpayment"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/payment/{paymentId}"}],"content":{"contentType":"group","meta":{"name":"Payments"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Payments","showPageActions":true},{"nodeType":"markdoc","content":"Payment retrieval for a location"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location/{locationId}/payment","summary":"List payments","prefix":{"name":"get","color":"get"},"badges":[],"link":"/payments/listpayments","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/payment/{paymentId}","summary":"Get payment by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/payments/getpayment","deprecated":false}]}]}]}]}},{"type":"group","label":"Refunds","link":"/openapi/refunds","routeSlug":"/openapi/refunds","items":[{"label":"List refunds","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/refunds/listrefunds","routeSlug":"/openapi/refunds/listrefunds","metadata":{"seo":{"title":"List refunds","description":"Retrieve refunds for the location using cursor pagination. Optional filters: posted-on date range (startDate, endDate on postedOn), patient ID, payment ID, and invoice ID."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listRefunds","name":"List refunds","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1refund/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List refunds","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve refunds for the location using cursor pagination. Optional filters: posted-on date range (startDate, endDate on postedOn), patient ID, payment ID, and invoice ID."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1refund/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"patientId","in":"query","schemaId":"schema_55","description":"Filter by patient ID","example":1234},{"name":"paymentId","in":"query","schemaId":"schema_55","description":"Filter by payment ID","example":1234},{"name":"invoiceId","in":"query","schemaId":"schema_55","description":"Filter by invoice ID","example":1234},{"name":"startDate","in":"query","schemaId":"schema_61","description":"Start of date range filter on posted time (postedOn). ISO 8601 format.","example":"2025-01-01T00:00:00Z"},{"name":"endDate","in":"query","schemaId":"schema_61","description":"End of date range filter on posted time (postedOn). ISO 8601 format.","example":"2025-01-31T23:59:59Z"},{"name":"sortBy","in":"query","schemaId":"schema_93","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_72","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1refund/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/refund","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"patientId","in":"query","example":1234,"schemaId":"schema_55"},{"name":"paymentId","in":"query","example":1234,"schemaId":"schema_55"},{"name":"invoiceId","in":"query","example":1234,"schemaId":"schema_55"},{"name":"startDate","in":"query","example":"2025-01-01T00:00:00Z","schemaId":"schema_61"},{"name":"endDate","in":"query","example":"2025-01-31T23:59:59Z","schemaId":"schema_61"},{"name":"sortBy","in":"query","schemaId":"schema_93"},{"name":"sortDir","in":"query","schemaId":"schema_72"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/refund","href":"refunds/listrefunds","openApiOperationId":"listRefunds","summary":"List refunds"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Refunds retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RefundListResponse"}},"schemaId":"components/schemas/RefundListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1refund/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RefundListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RefundListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/refunds/listrefunds"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/refund"},{"label":"Get refund by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/refunds/getrefund","routeSlug":"/openapi/refunds/getrefund","metadata":{"seo":{"title":"Get refund by ID","description":"Retrieve a single refund for the location."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getRefund","name":"Get refund by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1refund~1{refundId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get refund by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a single refund for the location."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"refundId","in":"path","schemaId":"schema_55","description":"Refund ID","required":true,"example":1234},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1refund~1{refundId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/refund/{refundId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"refundId","in":"path","required":true,"example":1234,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/refund/{refundId}","href":"refunds/getrefund","openApiOperationId":"getRefund","summary":"Get refund by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Refund found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RefundDTO"}},"schemaId":"components/schemas/RefundDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Refund not found for this location","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1refund~1{refundId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RefundDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RefundDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/refunds/getrefund"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/refund/{refundId}"}],"content":{"contentType":"group","meta":{"name":"Refunds"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Refunds","showPageActions":true},{"nodeType":"markdoc","content":"Refund retrieval for a location"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location/{locationId}/refund","summary":"List refunds","prefix":{"name":"get","color":"get"},"badges":[],"link":"/refunds/listrefunds","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/refund/{refundId}","summary":"Get refund by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/refunds/getrefund","deprecated":false}]}]}]}]}},{"type":"group","label":"Rooms","link":"/openapi/rooms","routeSlug":"/openapi/rooms","items":[{"label":"List rooms","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/rooms/listrooms","routeSlug":"/openapi/rooms/listrooms","metadata":{"seo":{"title":"List rooms","description":"Retrieve rooms for the location. Supports filtering by active status."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listRooms","name":"List rooms","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1room/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List rooms","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve rooms for the location. Supports filtering by active status."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1room/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_63","description":"Filter by active status"},{"name":"sortBy","in":"query","schemaId":"schema_64","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_59","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1room/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/room","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"active","in":"query","schemaId":"schema_63"},{"name":"sortBy","in":"query","schemaId":"schema_64"},{"name":"sortDir","in":"query","schemaId":"schema_59"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/room","href":"rooms/listrooms","openApiOperationId":"listRooms","summary":"List rooms"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Rooms retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RoomListResponse"}},"schemaId":"components/schemas/RoomListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1room/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RoomListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RoomListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/rooms/listrooms"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/room"},{"label":"Get room by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/rooms/getroom","routeSlug":"/openapi/rooms/getroom","metadata":{"seo":{"title":"Get room by ID","description":"Retrieve information about a specific room."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getRoom","name":"Get room by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1room~1{roomId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get room by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve information about a specific room."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"roomId","in":"path","schemaId":"schema_55","description":"Room ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1room~1{roomId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/room/{roomId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"roomId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/room/{roomId}","href":"rooms/getroom","openApiOperationId":"getRoom","summary":"Get room by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Room retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RoomDTO"}},"schemaId":"components/schemas/RoomDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Room not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1room~1{roomId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/RoomDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/RoomDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/rooms/getroom"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/room/{roomId}"}],"content":{"contentType":"group","meta":{"name":"Rooms"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Rooms","showPageActions":true},{"nodeType":"markdoc","content":"Room retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location/{locationId}/room","summary":"List rooms","prefix":{"name":"get","color":"get"},"badges":[],"link":"/rooms/listrooms","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/room/{roomId}","summary":"Get room by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/rooms/getroom","deprecated":false}]}]}]}]}},{"type":"group","label":"Schedulers","link":"/openapi/schedulers","routeSlug":"/openapi/schedulers","items":[{"label":"List schedulers","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/schedulers/listschedulers","routeSlug":"/openapi/schedulers/listschedulers","metadata":{"seo":{"title":"List schedulers","description":"Retrieve the account's schedulers (scheduler configs), optionally filtered by location and active status. Use the returned id to resolve a schedule for appointment creation. Weekly templates are omitted by default; pass includeTemplates=true to return them inline instead of fetching each scheduler individually."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listSchedulers","name":"List schedulers","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1scheduler/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List schedulers","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":"Retrieve the account's schedulers (scheduler configs), optionally filtered by location and active status. Use the returned id to resolve a schedule for appointment creation. Weekly templates are omitted by default; pass includeTemplates=true to return them inline instead of fetching each scheduler individually."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1scheduler/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"locationId","in":"query","schemaId":"schema_55","description":"Filter by location ID"},{"name":"active","in":"query","schemaId":"schema_63","description":"Filter by active status"},{"name":"includeTemplates","in":"query","schemaId":"schema_94","description":"Include each scheduler's weekly template in the response","example":false},{"name":"sortBy","in":"query","schemaId":"schema_64","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_59","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1scheduler/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/scheduler","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"locationId","in":"query","schemaId":"schema_55"},{"name":"active","in":"query","schemaId":"schema_63"},{"name":"includeTemplates","in":"query","example":false,"schemaId":"schema_94"},{"name":"sortBy","in":"query","schemaId":"schema_64"},{"name":"sortDir","in":"query","schemaId":"schema_59"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","422"],"pointer":"/partner/v2/account/{accountId}/scheduler","href":"schedulers/listschedulers","openApiOperationId":"listSchedulers","summary":"List schedulers"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Schedulers retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SchedulerListResponse"}},"schemaId":"components/schemas/SchedulerListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1scheduler/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/SchedulerListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SchedulerListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/schedulers/listschedulers"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/scheduler"},{"label":"Get scheduler by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/schedulers/getscheduler","routeSlug":"/openapi/schedulers/getscheduler","metadata":{"seo":{"title":"Get scheduler by ID","description":"Retrieve a scheduler (scheduler config) and its weekly template (days, hours, slot quantity, and the practitioner / appointment-type IDs bound to each day)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getScheduler","name":"Get scheduler by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1scheduler~1{schedulerConfigId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get scheduler by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a scheduler (scheduler config) and its weekly template (days, hours, slot quantity, and the practitioner / appointment-type IDs bound to each day)."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"schedulerConfigId","in":"path","schemaId":"schema_55","description":"Scheduler config ID","required":true,"example":1312},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1scheduler~1{schedulerConfigId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/scheduler/{schedulerConfigId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"schedulerConfigId","in":"path","required":true,"example":1312,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/scheduler/{schedulerConfigId}","href":"schedulers/getscheduler","openApiOperationId":"getScheduler","summary":"Get scheduler by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Scheduler retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SchedulerDTO"}},"schemaId":"components/schemas/SchedulerDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Scheduler not found or not associated with the authorized account","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1scheduler~1{schedulerConfigId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/SchedulerDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SchedulerDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/schedulers/getscheduler"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/scheduler/{schedulerConfigId}"}],"content":{"contentType":"group","meta":{"name":"Schedulers"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Schedulers","showPageActions":true},{"nodeType":"markdoc","content":"Scheduler (schedule) retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/scheduler","summary":"List schedulers","prefix":{"name":"get","color":"get"},"badges":[],"link":"/schedulers/listschedulers","deprecated":false},{"title":"/partner/v2/account/{accountId}/scheduler/{schedulerConfigId}","summary":"Get scheduler by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/schedulers/getscheduler","deprecated":false}]}]}]}]}},{"type":"group","label":"Self-Scheduling","link":"/openapi/self-scheduling","routeSlug":"/openapi/self-scheduling","items":[{"label":"Get appointment availability","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/self-scheduling/getavailability","routeSlug":"/openapi/self-scheduling/getavailability","metadata":{"seo":{"title":"Get appointment availability","description":"Returns available appointment slots for a time range. Time range must not exceed 2 months (62 days)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getAvailability","name":"Get appointment availability","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get appointment availability","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns available appointment slots for a time range. Time range must not exceed 2 months (62 days)."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"selfSchedulingSettingId","in":"query","schemaId":"schema_55","description":"Self-scheduling setting ID","required":true,"example":123},{"name":"startUnix","in":"query","schemaId":"schema_55","description":"Start time in milliseconds since epoch","required":true,"example":1704067200000},{"name":"endUnix","in":"query","schemaId":"schema_55","description":"End time in milliseconds since epoch","required":true,"example":1706745600000},{"name":"locationId","in":"query","schemaId":"schema_55","description":"Location ID","required":true,"example":1},{"name":"appointmentTypeId","in":"query","schemaId":"schema_55","description":"Appointment type ID","required":true,"example":10},{"name":"practitionerIds","in":"query","schemaId":"schema_61","description":"Comma-separated practitioner IDs to filter (optional)","example":"7,8,9"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/self-scheduling/availability","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"selfSchedulingSettingId","in":"query","required":true,"example":123,"schemaId":"schema_55"},{"name":"startUnix","in":"query","required":true,"example":1704067200000,"schemaId":"schema_55"},{"name":"endUnix","in":"query","required":true,"example":1706745600000,"schemaId":"schema_55"},{"name":"locationId","in":"query","required":true,"example":1,"schemaId":"schema_55"},{"name":"appointmentTypeId","in":"query","required":true,"example":10,"schemaId":"schema_55"},{"name":"practitionerIds","in":"query","example":"7,8,9","schemaId":"schema_61"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/self-scheduling/availability","href":"self-scheduling/getavailability","openApiOperationId":"getAvailability","summary":"Get appointment availability"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Availability slots retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PreparedScheduleOutputDTO","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses/200/content/application~1json/examples/Non-selectable practitioners","paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses/200/content/application~1json/examples/Selectable practitioners"]}},"schemaId":"components/schemas/PreparedScheduleOutputDTO","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses/200/content/application~1json/examples/Non-selectable practitioners","paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses/200/content/application~1json/examples/Selectable practitioners"]},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Self-scheduling setting not found or not associated with the authorized account","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid parameters - time range exceeds 62 days, invalid IDs, or other validation errors","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PreparedScheduleOutputDTO","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses/200/content/application~1json/examples/Non-selectable practitioners","paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses/200/content/application~1json/examples/Selectable practitioners"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PreparedScheduleOutputDTO","exampleIds":["paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses/200/content/application~1json/examples/Non-selectable practitioners","paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses/200/content/application~1json/examples/Selectable practitioners"]}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/self-scheduling/getavailability"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/self-scheduling/availability"},{"label":"List self-scheduling settings","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/self-scheduling/listsettings","routeSlug":"/openapi/self-scheduling/listsettings","metadata":{"seo":{"title":"List self-scheduling settings","description":"Retrieve the account's self-scheduling settings. Provide the optional publicUuid filter to resolve the setting behind a patient booking link (the UUID embedded in booking URLs) to its numeric id; the mapping can then be cached and used to call the availability endpoint."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listSettings","name":"List self-scheduling settings","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1setting/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List self-scheduling settings","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve the account's self-scheduling settings. Provide the optional publicUuid filter to resolve the setting behind a patient booking link (the UUID embedded in booking URLs) to its numeric id; the mapping can then be cached and used to call the availability endpoint."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1setting/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"publicUuid","in":"query","schemaId":"schema_80","description":"Public booking-link UUID to resolve to a single setting. When supplied, returns only the matching setting; a UUID that does not exist or belongs to another account returns 404.","example":"e33a52cb-1a33-4cb7-9d91-7a0238da5c0b"},{"name":"sortDir","in":"query","schemaId":"schema_59","description":"Sort direction (by setting id)"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1setting/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/self-scheduling/setting","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"publicUuid","in":"query","example":"e33a52cb-1a33-4cb7-9d91-7a0238da5c0b","schemaId":"schema_80"},{"name":"sortDir","in":"query","schemaId":"schema_59"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/self-scheduling/setting","href":"self-scheduling/listsettings","openApiOperationId":"listSettings","summary":"List self-scheduling settings"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Self-scheduling settings retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SelfSchedulingSettingListResponse"}},"schemaId":"components/schemas/SelfSchedulingSettingListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"The requested publicUuid does not resolve to a setting for the authorized account","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1setting/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/SelfSchedulingSettingListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SelfSchedulingSettingListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/self-scheduling/listsettings"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/self-scheduling/setting"},{"label":"Get self-scheduling setting","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/self-scheduling/getsetting","routeSlug":"/openapi/self-scheduling/getsetting","metadata":{"seo":{"title":"Get self-scheduling setting","description":"Retrieve self-scheduling configuration with associated practitioners, locations, appointment types, and scheduler configs."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getSetting","name":"Get self-scheduling setting","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1setting~1{selfSchedulingSettingId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get self-scheduling setting","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve self-scheduling configuration with associated practitioners, locations, appointment types, and scheduler configs."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"selfSchedulingSettingId","in":"path","schemaId":"schema_55","description":"Self-scheduling setting ID","required":true,"example":123},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1setting~1{selfSchedulingSettingId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/self-scheduling/setting/{selfSchedulingSettingId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"selfSchedulingSettingId","in":"path","required":true,"example":123,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/self-scheduling/setting/{selfSchedulingSettingId}","href":"self-scheduling/getsetting","openApiOperationId":"getSetting","summary":"Get self-scheduling setting"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Self-scheduling setting retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SelfSchedulingSettingResponse"}},"schemaId":"components/schemas/SelfSchedulingSettingResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Self-scheduling setting not found or not associated with the authorized account","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1setting~1{selfSchedulingSettingId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/SelfSchedulingSettingResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SelfSchedulingSettingResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/self-scheduling/getsetting"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/self-scheduling/setting/{selfSchedulingSettingId}"}],"content":{"contentType":"group","meta":{"name":"Self-Scheduling"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Self-Scheduling","showPageActions":true},{"nodeType":"markdoc","content":"Self-scheduling configuration and availability endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/self-scheduling/availability","summary":"Get appointment availability","prefix":{"name":"get","color":"get"},"badges":[],"link":"/self-scheduling/getavailability","deprecated":false},{"title":"/partner/v2/account/{accountId}/self-scheduling/setting","summary":"List self-scheduling settings","prefix":{"name":"get","color":"get"},"badges":[],"link":"/self-scheduling/listsettings","deprecated":false},{"title":"/partner/v2/account/{accountId}/self-scheduling/setting/{selfSchedulingSettingId}","summary":"Get self-scheduling setting","prefix":{"name":"get","color":"get"},"badges":[],"link":"/self-scheduling/getsetting","deprecated":false}]}]}]}]}},{"type":"group","label":"Self-Scheduling Attempt","link":"/openapi/self-scheduling-attempt","routeSlug":"/openapi/self-scheduling-attempt","items":[{"label":"Create self-scheduling attempt","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/self-scheduling-attempt/createattempt","routeSlug":"/openapi/self-scheduling-attempt/createattempt","metadata":{"seo":{"title":"Create self-scheduling attempt","description":"Initialize a new self-scheduling attempt. Validates that the setting is active and, if provided, that the identity proof matches the setting's verification requirements."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createAttempt","name":"Create self-scheduling attempt","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create self-scheduling attempt","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Initialize a new self-scheduling attempt. Validates that the setting is active and, if provided, that the identity proof matches the setting's verification requirements."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateAttemptRequest"}},"schemaId":"components/schemas/CreateAttemptRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/account/{accountId}/self-scheduling/attempt","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateAttemptRequest"}},"responseCodes":["201","401","404","409","422"],"pointer":"/partner/v2/account/{accountId}/self-scheduling/attempt","href":"self-scheduling-attempt/createattempt","openApiOperationId":"createAttempt","summary":"Create self-scheduling attempt"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/CreateAttemptRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateAttemptRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Attempt created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SelfSchedulingAttemptResponse"}},"schemaId":"components/schemas/SelfSchedulingAttemptResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Setting or Identity Proof not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"409","description":"Conflict - Self scheduling attempt already created for this identity proof","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request (Setting inactive, Proof method mismatch, or Account mismatch)","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/SelfSchedulingAttemptResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SelfSchedulingAttemptResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"409","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/self-scheduling-attempt/createattempt"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/self-scheduling/attempt"},{"label":"Get self-scheduling attempt","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/self-scheduling-attempt/getselfschedulingattempt","routeSlug":"/openapi/self-scheduling-attempt/getselfschedulingattempt","metadata":{"seo":{"title":"Get self-scheduling attempt","description":"Retrieve details of an existing self-scheduling attempt by ID. Returns attempt status including identity proof verification status, patient ID (if set), and appointment ID (if created). Returns 404 if attempt doesn't exist or doesn't belong to this account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getSelfSchedulingAttempt","name":"Get self-scheduling attempt","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt~1{attemptId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get self-scheduling attempt","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve details of an existing self-scheduling attempt by ID. Returns attempt status including identity proof verification status, patient ID (if set), and appointment ID (if created). Returns 404 if attempt doesn't exist or doesn't belong to this account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"attemptId","in":"path","schemaId":"schema_55","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt~1{attemptId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/self-scheduling/attempt/{attemptId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"attemptId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/self-scheduling/attempt/{attemptId}","href":"self-scheduling-attempt/getselfschedulingattempt","openApiOperationId":"getSelfSchedulingAttempt","summary":"Get self-scheduling attempt"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Self-scheduling attempt retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SelfSchedulingAttemptResponse"}},"schemaId":"components/schemas/SelfSchedulingAttemptResponse"},{"code":"401","description":"Unauthorized - invalid or missing partner token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Self-scheduling attempt not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt~1{attemptId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/SelfSchedulingAttemptResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SelfSchedulingAttemptResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/self-scheduling-attempt/getselfschedulingattempt"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/self-scheduling/attempt/{attemptId}"},{"label":"Create appointment for self-scheduling attempt","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/self-scheduling-attempt/createappointment_1","routeSlug":"/openapi/self-scheduling-attempt/createappointment_1","metadata":{"seo":{"title":"Create appointment for self-scheduling attempt","description":"Creates an appointment for the specified self-scheduling attempt. Patient must be set on the attempt before creating an appointment. Scheduler config must belong to the self-scheduling setting."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createAppointment_1","name":"Create appointment for self-scheduling attempt","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt~1{attemptId}~1appointment/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create appointment for self-scheduling attempt","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Creates an appointment for the specified self-scheduling attempt. Patient must be set on the attempt before creating an appointment. Scheduler config must belong to the self-scheduling setting."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"attemptId","in":"path","schemaId":"schema_55","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt~1{attemptId}~1appointment/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/SelfSchedulingCreateAppointmentRequest"}},"schemaId":"components/schemas/SelfSchedulingCreateAppointmentRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt~1{attemptId}~1appointment/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/account/{accountId}/self-scheduling/attempt/{attemptId}/appointment","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"attemptId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/SelfSchedulingCreateAppointmentRequest"}},"responseCodes":["201","401","404","409","422","500"],"pointer":"/partner/v2/account/{accountId}/self-scheduling/attempt/{attemptId}/appointment","href":"self-scheduling-attempt/createappointment_1","openApiOperationId":"createAppointment_1","summary":"Create appointment for self-scheduling attempt"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/SelfSchedulingCreateAppointmentRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/SelfSchedulingCreateAppointmentRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Appointment created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SelfSchedulingCreateAppointmentResponse"}},"schemaId":"components/schemas/SelfSchedulingCreateAppointmentResponse"},{"code":"401","description":"Unauthorized - invalid or missing partner token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Self-scheduling attempt not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"409","description":"Conflict - appointment already exists for this attempt","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Validation error - patient not set, invalid scheduler config, or invalid parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"500","description":"Internal server error - appointment creation failed","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt~1{attemptId}~1appointment/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/SelfSchedulingCreateAppointmentResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SelfSchedulingCreateAppointmentResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"409","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"500","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/self-scheduling-attempt/createappointment_1"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/self-scheduling/attempt/{attemptId}/appointment"},{"label":"Attach a patient to a self-scheduling attempt","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/self-scheduling-attempt/attachpatienttoselfschedulingattempt","routeSlug":"/openapi/self-scheduling-attempt/attachpatienttoselfschedulingattempt","metadata":{"seo":{"title":"Attach a patient to a self-scheduling attempt","description":"Resolves or creates a patient from the provided demographics and attaches them to the self-scheduling attempt. If the attempt has a verified identity proof, patient resolution will use it for matching. Returns 200 if an existing patient was found, 201 if a new patient was created."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"attachPatientToSelfSchedulingAttempt","name":"Attach a patient to a self-scheduling attempt","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt~1{attemptId}~1patient/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Attach a patient to a self-scheduling attempt","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Resolves or creates a patient from the provided demographics and attaches them to the self-scheduling attempt. If the attempt has a verified identity proof, patient resolution will use it for matching. Returns 200 if an existing patient was found, 201 if a new patient was created."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"attemptId","in":"path","schemaId":"schema_55","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt~1{attemptId}~1patient/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AttachPatientToSelfSchedulingAttemptRequest"}},"schemaId":"components/schemas/AttachPatientToSelfSchedulingAttemptRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt~1{attemptId}~1patient/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/account/{accountId}/self-scheduling/attempt/{attemptId}/patient","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"attemptId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/AttachPatientToSelfSchedulingAttemptRequest"}},"responseCodes":["200","201","401","404","422"],"pointer":"/partner/v2/account/{accountId}/self-scheduling/attempt/{attemptId}/patient","href":"self-scheduling-attempt/attachpatienttoselfschedulingattempt","openApiOperationId":"attachPatientToSelfSchedulingAttempt","summary":"Attach a patient to a self-scheduling attempt"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/AttachPatientToSelfSchedulingAttemptRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/AttachPatientToSelfSchedulingAttemptRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Existing patient attached to self-scheduling attempt","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientResponse"}},"schemaId":"components/schemas/PatientResponse"},{"code":"201","description":"New patient created and attached to self-scheduling attempt","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientResponse"}},"schemaId":"components/schemas/PatientResponse"},{"code":"401","description":"Unauthorized - invalid or missing partner token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Self-scheduling attempt not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Validation error - invalid input","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1attempt~1{attemptId}~1patient/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PatientResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientResponse"}}},{"code":"201","schemaId":"components/schemas/PatientResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PatientResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/self-scheduling-attempt/attachpatienttoselfschedulingattempt"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/self-scheduling/attempt/{attemptId}/patient"}],"content":{"contentType":"group","meta":{"name":"Self-Scheduling Attempt"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Self-Scheduling Attempt","showPageActions":true},{"nodeType":"markdoc","content":"Account-scoped self-scheduling attempt endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/self-scheduling/attempt","summary":"Create self-scheduling attempt","prefix":{"name":"post","color":"post"},"badges":[],"link":"/self-scheduling-attempt/createattempt","deprecated":false},{"title":"/partner/v2/account/{accountId}/self-scheduling/attempt/{attemptId}","summary":"Get self-scheduling attempt","prefix":{"name":"get","color":"get"},"badges":[],"link":"/self-scheduling-attempt/getselfschedulingattempt","deprecated":false},{"title":"/partner/v2/account/{accountId}/self-scheduling/attempt/{attemptId}/appointment","summary":"Create appointment for self-scheduling attempt","prefix":{"name":"post","color":"post"},"badges":[],"link":"/self-scheduling-attempt/createappointment_1","deprecated":false},{"title":"/partner/v2/account/{accountId}/self-scheduling/attempt/{attemptId}/patient","summary":"Attach a patient to a self-scheduling attempt","prefix":{"name":"post","color":"post"},"badges":[],"link":"/self-scheduling-attempt/attachpatienttoselfschedulingattempt","deprecated":false}]}]}]}]}},{"type":"group","label":"Staff & Practitioners","link":"/openapi/staff-and-practitioners","routeSlug":"/openapi/staff-and-practitioners","items":[{"label":"List staff members","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/staff-and-practitioners/liststaff","routeSlug":"/openapi/staff-and-practitioners/liststaff","metadata":{"seo":{"title":"List staff members","description":"Retrieve a paginated list of staff members for the account. Supports filtering by location, status, and practitioner status."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listStaff","name":"List staff members","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1staff/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List staff members","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a paginated list of staff members for the account. Supports filtering by location, status, and practitioner status."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1staff/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"locationId","in":"query","schemaId":"schema_55","description":"Filter by location ID"},{"name":"isPractitioner","in":"query","schemaId":"schema_63","description":"Filter by practitioner status. True returns only practitioners, false returns only non-practitioners."},{"name":"status","in":"query","schemaId":"schema_95","description":"Filter by status (case-insensitive)"},{"name":"firstName","in":"query","schemaId":"schema_61","description":"Filter by first name (case-insensitive contains)"},{"name":"lastName","in":"query","schemaId":"schema_61","description":"Filter by last name (case-insensitive contains)"},{"name":"email","in":"query","schemaId":"schema_61","description":"Filter by email (case-insensitive contains)"},{"name":"cursor","in":"query","schemaId":"schema_61","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1staff/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/staff","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"locationId","in":"query","schemaId":"schema_55"},{"name":"isPractitioner","in":"query","schemaId":"schema_63"},{"name":"status","in":"query","schemaId":"schema_95"},{"name":"firstName","in":"query","schemaId":"schema_61"},{"name":"lastName","in":"query","schemaId":"schema_61"},{"name":"email","in":"query","schemaId":"schema_61"},{"name":"cursor","in":"query","schemaId":"schema_61"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/staff","href":"staff-and-practitioners/liststaff","openApiOperationId":"listStaff","summary":"List staff members"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Staff members retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/StaffListResponse"}},"schemaId":"components/schemas/StaffListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1staff/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/StaffListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/StaffListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/staff-and-practitioners/liststaff"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/staff"},{"label":"Get staff member by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/staff-and-practitioners/getstaff","routeSlug":"/openapi/staff-and-practitioners/getstaff","metadata":{"seo":{"title":"Get staff member by ID","description":"Retrieve detailed information about a specific staff member."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getStaff","name":"Get staff member by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1staff~1{staffId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get staff member by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a specific staff member."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"staffId","in":"path","schemaId":"schema_55","description":"Staff member ID","required":true},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1staff~1{staffId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/staff/{staffId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"staffId","in":"path","required":true,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/staff/{staffId}","href":"staff-and-practitioners/getstaff","openApiOperationId":"getStaff","summary":"Get staff member by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Staff member found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/StaffDTO"}},"schemaId":"components/schemas/StaffDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Staff member not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1staff~1{staffId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/StaffDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/StaffDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/staff-and-practitioners/getstaff"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/staff/{staffId}"}],"content":{"contentType":"group","meta":{"name":"Staff & Practitioners"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Staff & Practitioners","showPageActions":true},{"nodeType":"markdoc","content":"Staff member and practitioner retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/staff","summary":"List staff members","prefix":{"name":"get","color":"get"},"badges":[],"link":"/staff-and-practitioners/liststaff","deprecated":false},{"title":"/partner/v2/account/{accountId}/staff/{staffId}","summary":"Get staff member by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/staff-and-practitioners/getstaff","deprecated":false}]}]}]}]}},{"type":"group","label":"Subscriptions","link":"/openapi/subscriptions","routeSlug":"/openapi/subscriptions","items":[{"label":"List subscriptions","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/subscriptions/listsubscriptions","routeSlug":"/openapi/subscriptions/listsubscriptions","metadata":{"seo":{"title":"List subscriptions","description":"Retrieve subscriptions for the location using cursor pagination. Optional filters: order ID, status, patient ID, item ID."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listSubscriptions","name":"List subscriptions","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1subscription/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List subscriptions","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve subscriptions for the location using cursor pagination. Optional filters: order ID, status, patient ID, item ID."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1subscription/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"orderId","in":"query","schemaId":"schema_55","description":"Filter by purchase order ID linked to the subscription","example":1234},{"name":"status","in":"query","schemaId":"schema_96","description":"Filter by subscription status","example":"ACTIVE"},{"name":"patientId","in":"query","schemaId":"schema_55","description":"Filter by patient ID","example":1234},{"name":"itemId","in":"query","schemaId":"schema_55","description":"Filter by item ID","example":10},{"name":"sortBy","in":"query","schemaId":"schema_97","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_72","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1subscription/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/subscription","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"orderId","in":"query","example":1234,"schemaId":"schema_55"},{"name":"status","in":"query","example":"ACTIVE","schemaId":"schema_96"},{"name":"patientId","in":"query","example":1234,"schemaId":"schema_55"},{"name":"itemId","in":"query","example":10,"schemaId":"schema_55"},{"name":"sortBy","in":"query","schemaId":"schema_97"},{"name":"sortDir","in":"query","schemaId":"schema_72"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/subscription","href":"subscriptions/listsubscriptions","openApiOperationId":"listSubscriptions","summary":"List subscriptions"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Subscriptions retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SubscriptionListResponse"}},"schemaId":"components/schemas/SubscriptionListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Account not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1subscription/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/SubscriptionListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SubscriptionListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/subscriptions/listsubscriptions"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/subscription"},{"label":"Get subscription by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/subscriptions/getsubscription","routeSlug":"/openapi/subscriptions/getsubscription","metadata":{"seo":{"title":"Get subscription by ID","description":"Retrieve a single subscription for the location, including line items."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getSubscription","name":"Get subscription by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1subscription~1{subscriptionId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get subscription by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a single subscription for the location, including line items."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"subscriptionId","in":"path","schemaId":"schema_55","description":"Subscription ID","required":true,"example":1234},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1subscription~1{subscriptionId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/subscription/{subscriptionId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"subscriptionId","in":"path","required":true,"example":1234,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/subscription/{subscriptionId}","href":"subscriptions/getsubscription","openApiOperationId":"getSubscription","summary":"Get subscription by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Subscription retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SubscriptionDTO"}},"schemaId":"components/schemas/SubscriptionDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Subscription not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1subscription~1{subscriptionId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/SubscriptionDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/SubscriptionDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/subscriptions/getsubscription"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/subscription/{subscriptionId}"}],"content":{"contentType":"group","meta":{"name":"Subscriptions"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Subscriptions","showPageActions":true},{"nodeType":"markdoc","content":"Subscription retrieval endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location/{locationId}/subscription","summary":"List subscriptions","prefix":{"name":"get","color":"get"},"badges":[],"link":"/subscriptions/listsubscriptions","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/subscription/{subscriptionId}","summary":"Get subscription by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/subscriptions/getsubscription","deprecated":false}]}]}]}]}},{"type":"group","label":"System","link":"/openapi/system","routeSlug":"/openapi/system","items":[{"label":"Health check","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/system/health","routeSlug":"/openapi/system/health","metadata":{"seo":{"title":"Health check","description":"Verify connectivity to the Partner API"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"health","name":"Health check","isWebhook":false,"pointer":"/paths/~1partner~1v2~1health/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Health check","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Verify connectivity to the Partner API"},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/health","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","500"],"pointer":"/partner/v2/health","href":"system/health","openApiOperationId":"health","summary":"Health check"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successfully connected to the Partner API"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"500","description":"Internal server error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1health/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200"},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"500","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/system/health"}],"panels":[]}]},"httpPath":"/partner/v2/health"}],"content":{"contentType":"group","meta":{"name":"System"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"System","showPageActions":true},{"nodeType":"markdoc","content":"Service health and diagnostics endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/health","summary":"Health check","prefix":{"name":"get","color":"get"},"badges":[],"link":"/system/health","deprecated":false}]}]}]}]}},{"type":"group","label":"Tasks","link":"/openapi/tasks","routeSlug":"/openapi/tasks","items":[{"label":"List tasks","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/tasks/listtasks","routeSlug":"/openapi/tasks/listtasks","metadata":{"seo":{"title":"List tasks","description":"Retrieve tasks for the location with keyset pagination. Filter by status, type, assignee, related patient, due-date range, creation-date range, and system vs manual. Sorted by creation date."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listTasks","name":"List tasks","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1task/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List tasks","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve tasks for the location with keyset pagination. Filter by status, type, assignee, related patient, due-date range, creation-date range, and system vs manual. Sorted by creation date."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1task/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"status","in":"query","schemaId":"schema_98","description":"Filter by status"},{"name":"type","in":"query","schemaId":"schema_99","description":"Filter by task type"},{"name":"assigneeStaffId","in":"query","schemaId":"schema_55","description":"Filter by assignee staff ID"},{"name":"patientId","in":"query","schemaId":"schema_55","description":"Filter by related patient ID"},{"name":"dueDateFrom","in":"query","schemaId":"schema_61","description":"Only tasks due on or after this date (YYYY-MM-DD)","example":"2025-01-01"},{"name":"dueDateTo","in":"query","schemaId":"schema_61","description":"Only tasks due on or before this date (YYYY-MM-DD)","example":"2025-12-31"},{"name":"createdOnFrom","in":"query","schemaId":"schema_61","description":"Only tasks created on or after this UTC timestamp (ISO-8601)","example":"2025-01-15T14:00:00Z"},{"name":"createdOnTo","in":"query","schemaId":"schema_61","description":"Only tasks created on or before this UTC timestamp (ISO-8601)","example":"2025-01-15T14:00:00Z"},{"name":"system","in":"query","schemaId":"schema_63","description":"Filter by system-generated (true) vs manually-created (false)"},{"name":"sortDir","in":"query","schemaId":"schema_72","description":"Sort direction (by creation date)"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1task/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/task","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[{"name":"status","in":"query","schemaId":"schema_98"},{"name":"type","in":"query","schemaId":"schema_99"},{"name":"assigneeStaffId","in":"query","schemaId":"schema_55"},{"name":"patientId","in":"query","schemaId":"schema_55"},{"name":"dueDateFrom","in":"query","example":"2025-01-01","schemaId":"schema_61"},{"name":"dueDateTo","in":"query","example":"2025-12-31","schemaId":"schema_61"},{"name":"createdOnFrom","in":"query","example":"2025-01-15T14:00:00Z","schemaId":"schema_61"},{"name":"createdOnTo","in":"query","example":"2025-01-15T14:00:00Z","schemaId":"schema_61"},{"name":"system","in":"query","schemaId":"schema_63"},{"name":"sortDir","in":"query","schemaId":"schema_72"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","422"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/task","href":"tasks/listtasks","openApiOperationId":"listTasks","summary":"List tasks"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tasks retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TaskListResponse"}},"schemaId":"components/schemas/TaskListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1task/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TaskListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TaskListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tasks/listtasks"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/task"},{"label":"Get task by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/tasks/gettask","routeSlug":"/openapi/tasks/gettask","metadata":{"seo":{"title":"Get task by ID","description":"Retrieve a single task for the location."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getTask","name":"Get task by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1task~1{taskId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get task by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a single task for the location."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"taskId","in":"path","schemaId":"schema_55","description":"Task ID","required":true,"example":42},{"name":"accountId","in":"path","schemaId":"schema_55","description":"Account identifier","required":true},{"name":"locationId","in":"path","schemaId":"schema_55","description":"Location identifier","required":true}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1task~1{taskId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/location/{locationId}/task/{taskId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"taskId","in":"path","required":true,"example":42,"schemaId":"schema_55"},{"name":"accountId","in":"path","required":true,"schemaId":"schema_55"},{"name":"locationId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/account/{accountId}/location/{locationId}/task/{taskId}","href":"tasks/gettask","openApiOperationId":"getTask","summary":"Get task by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Task found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TaskDTO"}},"schemaId":"components/schemas/TaskDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Task not found for this account/location","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1location~1{locationId}~1task~1{taskId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TaskDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TaskDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tasks/gettask"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/location/{locationId}/task/{taskId}"}],"content":{"contentType":"group","meta":{"name":"Tasks"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Tasks","showPageActions":true},{"nodeType":"markdoc","content":"Task retrieval for a location"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/location/{locationId}/task","summary":"List tasks","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tasks/listtasks","deprecated":false},{"title":"/partner/v2/account/{accountId}/location/{locationId}/task/{taskId}","summary":"Get task by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tasks/gettask","deprecated":false}]}]}]}]}},{"type":"group","label":"UTM","link":"/openapi/utm","routeSlug":"/openapi/utm","items":[{"label":"List UTM attribution records","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/utm/listutm","routeSlug":"/openapi/utm/listutm","metadata":{"seo":{"title":"List UTM attribution records","description":"Retrieve a keyset-paginated list of UTM attribution records for the account. Filter by appointmentId or selfSchedulingAttemptId to fetch a single record's attribution, or by capture-date range and funnel stage for bulk pulls. Returns an empty list (not 404) when nothing matches."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listUtm","name":"List UTM attribution records","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1utm/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List UTM attribution records","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve a keyset-paginated list of UTM attribution records for the account. Filter by appointmentId or selfSchedulingAttemptId to fetch a single record's attribution, or by capture-date range and funnel stage for bulk pulls. Returns an empty list (not 404) when nothing matches."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"appointmentId","in":"query","schemaId":"schema_55","description":"Filter to the UTM attributed to this appointment","example":12345},{"name":"selfSchedulingAttemptId","in":"query","schemaId":"schema_55","description":"Filter to the UTM captured on this self-scheduling attempt","example":678},{"name":"startDate","in":"query","schemaId":"schema_61","description":"Start of UTM capture-date range (ISO 8601)","example":"2025-01-01T00:00:00Z"},{"name":"endDate","in":"query","schemaId":"schema_61","description":"End of UTM capture-date range (ISO 8601)","example":"2025-01-31T23:59:59Z"},{"name":"stage","in":"query","schemaId":"schema_100","description":"Filter by funnel stage: CONVERTED (appointment-linked) or LANDED (attempt-only)"},{"name":"sortDir","in":"query","schemaId":"schema_72","description":"Sort direction (by capture date); newest first by default"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1utm/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/account/{accountId}/utm","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[],"query":[{"name":"appointmentId","in":"query","example":12345,"schemaId":"schema_55"},{"name":"selfSchedulingAttemptId","in":"query","example":678,"schemaId":"schema_55"},{"name":"startDate","in":"query","example":"2025-01-01T00:00:00Z","schemaId":"schema_61"},{"name":"endDate","in":"query","example":"2025-01-31T23:59:59Z","schemaId":"schema_61"},{"name":"stage","in":"query","schemaId":"schema_100"},{"name":"sortDir","in":"query","schemaId":"schema_72"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","422"],"pointer":"/partner/v2/account/{accountId}/utm","href":"utm/listutm","openApiOperationId":"listUtm","summary":"List UTM attribution records"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"UTM records retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerUtmListResponse"}},"schemaId":"components/schemas/PartnerUtmListResponse"},{"code":"401","description":"Unauthorized - invalid or missing partner token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1utm/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PartnerUtmListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerUtmListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/utm/listutm"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/utm"},{"label":"Set UTM on a self-scheduling attempt","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/utm/setutm","routeSlug":"/openapi/utm/setutm","metadata":{"seo":{"title":"Set UTM on a self-scheduling attempt","description":"Attach UTM attribution to a self-scheduling attempt (a separate action from creating the attempt). Provide the attempt id plus at least one UTM value; values are normalized and auto-created as account-scoped options. An attempt's UTM is captured once."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"setUtm","name":"Set UTM on a self-scheduling attempt","isWebhook":false,"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1utm/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Set UTM on a self-scheduling attempt","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Attach UTM attribution to a self-scheduling attempt (a separate action from creating the attempt). Provide the attempt id plus at least one UTM value; values are normalized and auto-created as account-scoped options. An attempt's UTM is captured once."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateUtmRequest"}},"schemaId":"components/schemas/CreateUtmRequest","pointer":"/paths/~1partner~1v2~1account~1{accountId}~1utm/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/account/{accountId}/utm","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateUtmRequest"}},"responseCodes":["201","401","404","409","422"],"pointer":"/partner/v2/account/{accountId}/utm","href":"utm/setutm","openApiOperationId":"setUtm","summary":"Set UTM on a self-scheduling attempt"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/CreateUtmRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateUtmRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"UTM attached to the attempt","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerUtmDTO"}},"schemaId":"components/schemas/PartnerUtmDTO"},{"code":"401","description":"Unauthorized - invalid or missing partner token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Self-scheduling attempt not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"409","description":"Attempt already has a UTM (captured once)","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Missing selfSchedulingAttemptId, no UTM values provided, or a value longer than 255 characters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1account~1{accountId}~1utm/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/PartnerUtmDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerUtmDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"409","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/utm/setutm"}],"panels":[]}]},"httpPath":"/partner/v2/account/{accountId}/utm"}],"content":{"contentType":"group","meta":{"name":"UTM"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"UTM","showPageActions":true},{"nodeType":"markdoc","content":"UTM attribution lookup and write endpoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/account/{accountId}/utm","summary":"List UTM attribution records","prefix":{"name":"get","color":"get"},"badges":[],"link":"/utm/listutm","deprecated":false},{"title":"/partner/v2/account/{accountId}/utm","summary":"Set UTM on a self-scheduling attempt","prefix":{"name":"post","color":"post"},"badges":[],"link":"/utm/setutm","deprecated":false}]}]}]}]}},{"type":"group","label":"Webhooks","link":"/openapi/webhooks","routeSlug":"/openapi/webhooks","items":[{"label":"List webhook endpoints","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/listwebhookendpoints","routeSlug":"/openapi/webhooks/listwebhookendpoints","metadata":{"seo":{"title":"List webhook endpoints","description":"Retrieve all configured webhook endpoints."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listWebhookEndpoints","name":"List webhook endpoints","isWebhook":false,"pointer":"/paths/~1partner~1v2~1webhook/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List webhook endpoints","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve all configured webhook endpoints."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"active","in":"query","schemaId":"schema_63","description":"Filter by active status (true/false)"},{"name":"sortBy","in":"query","schemaId":"schema_101","description":"Sort by field"},{"name":"sortDir","in":"query","schemaId":"schema_72","description":"Sort direction"},{"name":"cursor","in":"query","schemaId":"schema_53","description":"Pagination cursor from previous response"},{"name":"limit","in":"query","schemaId":"schema_54","description":"Number of results per page (max 1000)","example":20}],"pointer":"/paths/~1partner~1v2~1webhook/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/webhook","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[],"query":[{"name":"active","in":"query","schemaId":"schema_63"},{"name":"sortBy","in":"query","schemaId":"schema_101"},{"name":"sortDir","in":"query","schemaId":"schema_72"},{"name":"cursor","in":"query","schemaId":"schema_53"},{"name":"limit","in":"query","example":20,"schemaId":"schema_54"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","422"],"pointer":"/partner/v2/webhook","href":"webhooks/listwebhookendpoints","openApiOperationId":"listWebhookEndpoints","summary":"List webhook endpoints"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook endpoints retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookEndpointListResponse"}},"schemaId":"components/schemas/WebhookEndpointListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request parameters","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1webhook/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookEndpointListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookEndpointListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/listwebhookendpoints"}],"panels":[]}]},"httpPath":"/partner/v2/webhook"},{"label":"Create webhook endpoint","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/createwebhookendpoint","routeSlug":"/openapi/webhooks/createwebhookendpoint","metadata":{"seo":{"title":"Create webhook endpoint","description":"Create a new webhook endpoint to receive event notifications. Specify the URL and the event types you want to subscribe to. A signing secret will be generated and returned - store it securely."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createWebhookEndpoint","name":"Create webhook endpoint","isWebhook":false,"pointer":"/paths/~1partner~1v2~1webhook/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create webhook endpoint","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Create a new webhook endpoint to receive event notifications. Specify the URL and the event types you want to subscribe to. A signing secret will be generated and returned - store it securely."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateWebhookEndpointRequest"}},"schemaId":"components/schemas/CreateWebhookEndpointRequest","pointer":"/paths/~1partner~1v2~1webhook/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/webhook","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateWebhookEndpointRequest"}},"responseCodes":["201","401","422"],"pointer":"/partner/v2/webhook","href":"webhooks/createwebhookendpoint","openApiOperationId":"createWebhookEndpoint","summary":"Create webhook endpoint"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/CreateWebhookEndpointRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateWebhookEndpointRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Webhook endpoint created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookEndpointDTO"}},"schemaId":"components/schemas/WebhookEndpointDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Invalid request data — bad URL, unknown event type, or empty event list"},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1webhook/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/WebhookEndpointDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookEndpointDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/createwebhookendpoint"}],"panels":[]}]},"httpPath":"/partner/v2/webhook"},{"label":"List available event types","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/listeventtypes","routeSlug":"/openapi/webhooks/listeventtypes","metadata":{"seo":{"title":"List available event types","description":"Retrieve the list of event types that can be subscribed to."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"listEventTypes","name":"List available event types","isWebhook":false,"pointer":"/paths/~1partner~1v2~1webhook~1event-types/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List available event types","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve the list of event types that can be subscribed to."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/webhook/event-types","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401"],"pointer":"/partner/v2/webhook/event-types","href":"webhooks/listeventtypes","openApiOperationId":"listEventTypes","summary":"List available event types"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Event types retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/EventTypeListResponse"}},"schemaId":"components/schemas/EventTypeListResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1webhook~1event-types/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/EventTypeListResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/EventTypeListResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/listeventtypes"}],"panels":[]}]},"httpPath":"/partner/v2/webhook/event-types"},{"label":"Delete webhook endpoint","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/deletewebhookendpoint","routeSlug":"/openapi/webhooks/deletewebhookendpoint","metadata":{"seo":{"title":"Delete webhook endpoint","description":"Permanently delete a webhook endpoint. Deleted endpoints stop receiving deliveries immediately and cannot be recovered — to temporarily pause deliveries without losing configuration, set active=false instead."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"deleteWebhookEndpoint","name":"Delete webhook endpoint","isWebhook":false,"pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete webhook endpoint","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":"Permanently delete a webhook endpoint. Deleted endpoints stop receiving deliveries immediately and cannot be recovered — to temporarily pause deliveries without losing configuration, set active=false instead."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"webhookId","in":"path","schemaId":"schema_55","description":"Webhook endpoint ID","required":true}],"pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/partner/v2/webhook/{webhookId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"webhookId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["204","401","404"],"pointer":"/partner/v2/webhook/{webhookId}","href":"webhooks/deletewebhookendpoint","openApiOperationId":"deleteWebhookEndpoint","summary":"Delete webhook endpoint"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204","description":"Webhook endpoint deleted successfully"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Webhook endpoint not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"204"},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/deletewebhookendpoint"}],"panels":[]}]},"httpPath":"/partner/v2/webhook/{webhookId}"},{"label":"Get webhook endpoint by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/getwebhookendpoint","routeSlug":"/openapi/webhooks/getwebhookendpoint","metadata":{"seo":{"title":"Get webhook endpoint by ID","description":"Retrieve detailed information about a webhook endpoint."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getWebhookEndpoint","name":"Get webhook endpoint by ID","isWebhook":false,"pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get webhook endpoint by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve detailed information about a webhook endpoint."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"webhookId","in":"path","schemaId":"schema_55","description":"Webhook endpoint ID","required":true}],"pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/partner/v2/webhook/{webhookId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"webhookId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/partner/v2/webhook/{webhookId}","href":"webhooks/getwebhookendpoint","openApiOperationId":"getWebhookEndpoint","summary":"Get webhook endpoint by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook endpoint found and returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookEndpointDTO"}},"schemaId":"components/schemas/WebhookEndpointDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Webhook endpoint not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookEndpointDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookEndpointDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/getwebhookendpoint"}],"panels":[]}]},"httpPath":"/partner/v2/webhook/{webhookId}"},{"label":"Update webhook endpoint","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/updatewebhookendpoint","routeSlug":"/openapi/webhooks/updatewebhookendpoint","metadata":{"seo":{"title":"Update webhook endpoint","description":"Update a webhook endpoint's URL, event subscriptions, friendly name, or enabled status. Any field left null is left unchanged."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateWebhookEndpoint","name":"Update webhook endpoint","isWebhook":false,"pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update webhook endpoint","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update a webhook endpoint's URL, event subscriptions, friendly name, or enabled status. Any field left null is left unchanged."},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"webhookId","in":"path","schemaId":"schema_55","description":"Webhook endpoint ID","required":true}],"pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateWebhookEndpointRequest"}},"schemaId":"components/schemas/UpdateWebhookEndpointRequest","pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/partner/v2/webhook/{webhookId}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"webhookId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/UpdateWebhookEndpointRequest"}},"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/webhook/{webhookId}","href":"webhooks/updatewebhookendpoint","openApiOperationId":"updateWebhookEndpoint","summary":"Update webhook endpoint"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/UpdateWebhookEndpointRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/UpdateWebhookEndpointRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook endpoint updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookEndpointDTO"}},"schemaId":"components/schemas/WebhookEndpointDTO"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Webhook endpoint not found","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":"Invalid request data","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/WebhookEndpointDTO","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/WebhookEndpointDTO"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/updatewebhookendpoint"}],"panels":[]}]},"httpPath":"/partner/v2/webhook/{webhookId}"},{"label":"Send test event","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/testwebhookendpoint","routeSlug":"/openapi/webhooks/testwebhookendpoint","metadata":{"seo":{"title":"Send test event","description":"Send a synchronous test event to the webhook endpoint to verify connectivity and signature handling. The request body names the account the test event is attributed to — webhook endpoints are integrator-scoped and serve every account the integrator is granted, so there is no implicit account to test under."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"testWebhookEndpoint","name":"Send test event","isWebhook":false,"pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}~1test/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Send test event","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":"Send a synchronous test event to the webhook endpoint to verify connectivity and signature handling. The request body names the account the test event is attributed to — webhook endpoints are integrator-scoped and serve every account the integrator is granted, so there is no implicit account to test under."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"PartnerApiKey","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}]},{"name":"PartnerOAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"webhookId","in":"path","schemaId":"schema_55","description":"Webhook endpoint ID","required":true}],"pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}~1test/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TestWebhookRequest"}},"schemaId":"components/schemas/TestWebhookRequest","pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}~1test/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/partner/v2/webhook/{webhookId}/test","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"parameters":{"path":[{"name":"webhookId","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"PartnerApiKey","type":"apiKey","name":"x-api-key","in":"header"},{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/TestWebhookRequest"}},"responseCodes":["200","401","404","422"],"pointer":"/partner/v2/webhook/{webhookId}/test","href":"webhooks/testwebhookendpoint","openApiOperationId":"testWebhookEndpoint","summary":"Send test event"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}],"schemaId":"components/schemas/TestWebhookRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/TestWebhookRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Test event was attempted. Inspect the response body for the delivery outcome (success, status code, response time, human-readable message).","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TestWebhookResponse"}},"schemaId":"components/schemas/TestWebhookResponse"},{"code":"401","description":"Unauthorized - invalid or missing token","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"404","description":"Webhook endpoint not found, or the partner has no grant to the account","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"},{"code":"422","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Invalid request data — missing or non-numeric accountId"},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}},"schemaId":"components/schemas/PartnerError"}],"pointer":"/paths/~1partner~1v2~1webhook~1{webhookId}~1test/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TestWebhookResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TestWebhookResponse"}}},{"code":"401","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"404","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}},{"code":"422","schemaId":"components/schemas/PartnerError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PartnerError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/testwebhookendpoint"}],"panels":[]}]},"httpPath":"/partner/v2/webhook/{webhookId}/test"}],"content":{"contentType":"group","meta":{"name":"Webhooks"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Webhooks","showPageActions":true},{"nodeType":"markdoc","content":"Webhook configuration and event delivery management."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/partner/v2/webhook","summary":"List webhook endpoints","prefix":{"name":"get","color":"get"},"badges":[],"link":"/webhooks/listwebhookendpoints","deprecated":false},{"title":"/partner/v2/webhook","summary":"Create webhook endpoint","prefix":{"name":"post","color":"post"},"badges":[],"link":"/webhooks/createwebhookendpoint","deprecated":false},{"title":"/partner/v2/webhook/event-types","summary":"List available event types","prefix":{"name":"get","color":"get"},"badges":[],"link":"/webhooks/listeventtypes","deprecated":false},{"title":"/partner/v2/webhook/{webhookId}","summary":"Delete webhook endpoint","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/webhooks/deletewebhookendpoint","deprecated":false},{"title":"/partner/v2/webhook/{webhookId}","summary":"Get webhook endpoint by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/webhooks/getwebhookendpoint","deprecated":false},{"title":"/partner/v2/webhook/{webhookId}","summary":"Update webhook endpoint","prefix":{"name":"put","color":"put"},"badges":[],"link":"/webhooks/updatewebhookendpoint","deprecated":false},{"title":"/partner/v2/webhook/{webhookId}/test","summary":"Send test event","prefix":{"name":"post","color":"post"},"badges":[],"link":"/webhooks/testwebhookendpoint","deprecated":false}]}]}]}]}}],"store":{"schemaStore":{"components/schemas/AccountListResponse":{"id":"components/schemas/AccountListResponse","kind":"json-schema","title":"AccountListResponse","data":{"description":"Paginated list of authorized accounts","properties":{"accounts":{"description":"List of authorized accounts in this page","items":{"$ref":"#/components/schemas/AccountResponse"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"}},"type":"object"}},"components/schemas/AccountResponse":{"id":"components/schemas/AccountResponse","kind":"json-schema","title":"AccountResponse","data":{"description":"Account information and settings","properties":{"dobRequired":{"description":"Whether date of birth is required for patients. When true, POST /patient must include dateOfBirth and PUT /patient cannot clear it (explicit null is rejected). When false, dateOfBirth is optional and can be cleared.","example":true,"type":"boolean"},"id":{"description":"Unique account identifier","example":12345,"format":"int64","type":"integer"},"name":{"description":"Account name","example":"Acme Dental","type":"string"}},"type":"object"}},"components/schemas/AddressDTO":{"id":"components/schemas/AddressDTO","kind":"json-schema","title":"AddressDTO","data":{"description":"Address information","properties":{"address1":{"description":"Street address line 1","example":"123 Main Street","type":"string"},"address2":{"description":"Street address line 2","example":"Suite 100","type":"string"},"city":{"description":"City","example":"Baltimore","type":"string"},"postalCode":{"description":"Postal/ZIP code","example":"21202","type":"string"},"state":{"description":"State/Province abbreviation","example":"MD","type":"string"}},"type":"object"}},"components/schemas/AllergyDTO":{"id":"components/schemas/AllergyDTO","kind":"json-schema","title":"AllergyDTO","data":{"description":"Patient allergy","properties":{"active":{"description":"Whether this record is active","example":true,"type":"boolean"},"allergy":{"description":"Allergy name","example":"Penicillin","type":"string"},"comment":{"description":"Additional comments","example":"Patient reports severe reaction in childhood","type":"string"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"createdBy":{"description":"Created by (staff name)","example":"Dr. Jane Smith","type":"string"},"endDate":{"description":"End date (if resolved)","example":"2023-01-10","format":"date","type":"string"},"id":{"description":"Unique allergy identifier","example":12345,"format":"int64","type":"integer"},"mainReaction":{"description":"Primary reaction/symptom","example":"Hives","type":"string"},"onsetDate":{"description":"Onset date","example":"2020-05-15","format":"date","type":"string"},"patientId":{"description":"Patient ID","example":67890,"format":"int64","type":"integer"},"referenceId":{"description":"External reference ID (SNOMED, RxNorm, etc.)","example":"91936005","type":"string"},"severity":{"description":"Severity level","enum":["SEVERE","MODERATE","MILD","UNKNOWN"],"example":"MODERATE","type":"string"},"status":{"description":"Allergy status","enum":["ACTIVE","RESOLVED","UNKNOWN"],"example":"ACTIVE","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"updatedBy":{"description":"Last updated by (staff name)","example":"Dr. Jane Smith","type":"string"}},"type":"object"}},"components/schemas/AllergyListResponse":{"id":"components/schemas/AllergyListResponse","kind":"json-schema","title":"AllergyListResponse","data":{"description":"List of allergies","properties":{"allergies":{"description":"List of allergies","items":{"$ref":"#/components/schemas/AllergyDTO"},"type":"array"}},"type":"object"}},"components/schemas/AnswerUpdate":{"id":"components/schemas/AnswerUpdate","kind":"json-schema","title":"AnswerUpdate","data":{"description":"A single form answer update","properties":{"formElementId":{"description":"Form element ID to update","example":11111,"format":"int64","type":"integer"},"value":{"description":"New answer value","example":"John","type":"string"}},"required":["formElementId"],"type":"object"}},"components/schemas/AppointmentDTO":{"id":"components/schemas/AppointmentDTO","kind":"json-schema","title":"AppointmentDTO","data":{"description":"Appointment details","properties":{"appointmentTypeId":{"description":"Appointment type ID","example":333,"format":"int64","type":"integer"},"checkedInAt":{"description":"Time the patient checked in (UTC, ISO 8601); null if not yet checked in","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"checkedOutAt":{"description":"Time the patient checked out (UTC, ISO 8601); null if not yet checked out","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"confirmedAt":{"description":"Time the appointment was confirmed (UTC, ISO 8601); null if not yet confirmed","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"durationMinutes":{"description":"Duration in minutes","example":30,"format":"int32","type":"integer"},"endTime":{"description":"Appointment end time (UTC, ISO 8601)","example":"2025-01-15T14:30:00Z","format":"date-time","type":"string"},"id":{"description":"Unique appointment identifier","example":12345,"format":"int64","type":"integer"},"locationId":{"description":"Location ID","example":111,"format":"int64","type":"integer"},"note":{"description":"Appointment notes","example":"Annual checkup","type":"string"},"patientId":{"description":"Patient ID","example":67890,"format":"int64","type":"integer"},"practitionerId":{"description":"Practitioner ID (staff member with a practitioner role)","example":222,"format":"int64","type":"integer"},"roomId":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Room ID (set when appointment is IN_TREATMENT)"},"children":[]}]}]}],"example":1,"format":"int64","type":"integer"},"roomInAt":{"description":"Time the patient was brought into the room (UTC, ISO 8601); null if not set","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"startTime":{"description":"Appointment start time (UTC, ISO 8601)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"status":{"description":"Appointment status","enum":["SCHEDULED","CONFIRMED","CHECKED_IN","IN_TREATMENT","CHECKED_OUT","CANCELLED","NO_SHOW"],"example":"SCHEDULED","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/AppointmentLinksDTO":{"id":"components/schemas/AppointmentLinksDTO","kind":"json-schema","title":"AppointmentLinksDTO","data":{"description":"Patient-facing confirm/cancel links for an appointment","properties":{"appointmentId":{"description":"Appointment ID","example":12345,"format":"int64","type":"integer"},"cancelUrl":{"description":"URL the patient visits to cancel the appointment. Null when patient cancellation is disabled for the account.","example":"https://my.lobbie.com/appointmentConfirmation/abc123token/2","type":"string"},"confirmUrl":{"description":"URL the patient visits to confirm the appointment","example":"https://my.lobbie.com/appointmentConfirmation/abc123token/1","type":"string"},"expiresAt":{"description":"When the links expire (the appointment start time, UTC ISO 8601)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/AppointmentListResponse":{"id":"components/schemas/AppointmentListResponse","kind":"json-schema","title":"AppointmentListResponse","data":{"description":"Paginated list of appointments","properties":{"appointments":{"description":"List of appointments in this page","items":{"$ref":"#/components/schemas/AppointmentDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"}},"type":"object"}},"components/schemas/AppointmentTypeDTO":{"id":"components/schemas/AppointmentTypeDTO","kind":"json-schema","title":"AppointmentTypeDTO","data":{"description":"Appointment Type configuration details","properties":{"active":{"description":"Indicates if the type is active","example":true,"type":"boolean"},"color":{"description":"Display color code (hex)","example":"#2B46FF","type":"string"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"description":{"description":"Description/Instructions for the appointment","example":"Please arrive 15 minutes early to fill out paperwork.","type":"string"},"duration":{"description":"Duration in minutes","example":30,"format":"int32","type":"integer"},"id":{"description":"Unique identifier","example":1001,"format":"int64","type":"integer"},"name":{"description":"Name of the appointment type","example":"New Patient Consultation","type":"string"},"telehealth":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Telehealth configuration (0=none, 1=with forms, 2=no forms)"},"children":[]}]}]}],"example":1,"format":"int32","type":"integer"}},"type":"object"}},"components/schemas/AppointmentTypeListResponse":{"id":"components/schemas/AppointmentTypeListResponse","kind":"json-schema","title":"AppointmentTypeListResponse","data":{"description":"Paginated list of appointment types","properties":{"appointmentTypes":{"description":"List of appointment types in this page","items":{"$ref":"#/components/schemas/AppointmentTypeDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","example":"eyJpZCI6MTAwMSwibmFtZSI6IkNvbnN1bHQifQ","type":"string"}},"type":"object"}},"components/schemas/AttachPatientToSelfSchedulingAttemptRequest":{"id":"components/schemas/AttachPatientToSelfSchedulingAttemptRequest","kind":"json-schema","title":"AttachPatientToSelfSchedulingAttemptRequest","data":{"description":"Request to attach a patient to a self-scheduling attempt","properties":{"dateOfBirth":{"description":"Date of birth in yyyy-MM-dd format","example":"1985-10-26","minLength":1,"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"email":{"description":"Patient email address","example":"jane.doe@example.com","format":"email","type":"string"},"firstName":{"description":"Patient first name","example":"Jane","minLength":1,"type":"string"},"lastName":{"description":"Patient last name","example":"Doe","minLength":1,"type":"string"},"phone":{"description":"Patient phone number (10 digits)","example":"5551234567","pattern":"^\\d{10}$","type":"string"}},"required":["dateOfBirth","firstName","lastName"],"type":"object"}},"components/schemas/CategoryDTO":{"id":"components/schemas/CategoryDTO","kind":"json-schema","title":"CategoryDTO","data":{"description":"Patient category details","properties":{"active":{"description":"Whether this category is active","example":true,"type":"boolean"},"color":{"description":"Display color (hex code)","example":"#4CAF50","type":"string"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"id":{"description":"Unique category identifier","example":12345,"format":"int64","type":"integer"},"name":{"description":"Category name","example":"Active Patient","type":"string"},"patientCount":{"description":"Number of patients in this category","example":150,"format":"int32","type":"integer"},"sortOrder":{"description":"Sort order for display","example":1,"format":"int32","type":"integer"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/CategoryListResponse":{"id":"components/schemas/CategoryListResponse","kind":"json-schema","title":"CategoryListResponse","data":{"description":"Paginated list of categories","properties":{"categories":{"description":"List of categories","items":{"$ref":"#/components/schemas/CategoryDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"}},"type":"object"}},"components/schemas/CategoryTransitionDTO":{"id":"components/schemas/CategoryTransitionDTO","kind":"json-schema","title":"CategoryTransitionDTO","data":{"description":"Category transition details","properties":{"categoryColor":{"description":"Category color (hex code)","example":"#4CAF50","type":"string"},"categoryId":{"description":"Category definition ID for this enrollment","example":111,"format":"int64","type":"integer"},"categoryName":{"description":"Category name","example":"Active Patient","type":"string"},"changedBy":{"description":"Staff member who made the change (if manual)","example":"Jane Smith","type":"string"},"fromCrmStatusColor":{"description":"Previous CRM status color (hex code)","example":"#2196F3","type":"string"},"fromCrmStatusId":{"description":"Previous CRM status ID (null on initial assignment)","example":10,"format":"int64","type":"integer"},"fromCrmStatusName":{"description":"Previous CRM status name","example":"New","type":"string"},"id":{"description":"Unique transition identifier","example":12345,"format":"int64","type":"integer"},"patientCategoryId":{"description":"Patient category enrollment ID this transition applies to","example":55,"format":"int64","type":"integer"},"patientId":{"description":"Patient ID","example":67890,"format":"int64","type":"integer"},"toCrmStatusColor":{"description":"New CRM status color (hex code)","example":"#4CAF50","type":"string"},"toCrmStatusId":{"description":"New CRM status ID","example":11,"format":"int64","type":"integer"},"toCrmStatusName":{"description":"New CRM status name","example":"Qualified","type":"string"},"transitionedAt":{"description":"When the transition occurred","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/CategoryTransitionListResponse":{"id":"components/schemas/CategoryTransitionListResponse","kind":"json-schema","title":"CategoryTransitionListResponse","data":{"description":"Paginated list of category transitions","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"},"transitions":{"description":"List of category transitions","items":{"$ref":"#/components/schemas/CategoryTransitionDTO"},"type":"array"}},"type":"object"}},"components/schemas/CreateAppointmentRequest":{"id":"components/schemas/CreateAppointmentRequest","kind":"json-schema","title":"CreateAppointmentRequest","data":{"description":"Request to create a new appointment","properties":{"appointmentTypeId":{"description":"Appointment type ID","example":333,"format":"int64","type":"integer"},"note":{"description":"Appointment notes","example":"Annual checkup","type":"string"},"patientId":{"description":"Patient ID","example":67890,"format":"int64","type":"integer"},"practitionerId":{"description":"Practitioner ID (staff member with a practitioner role)","example":222,"format":"int64","type":"integer"},"roomId":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Room ID (required when status is IN_TREATMENT; must be an active room at the location)"},"children":[]}]}]}],"example":1,"format":"int64","type":"integer"},"schedulerConfigId":{"description":"Scheduler config ID (from the availability slot being booked)","example":1,"format":"int64","type":"integer"},"startTime":{"description":"Appointment start time in ISO 8601 format (e.g., 2025-01-15T09:00:00-05:00)","example":"2025-01-15T09:00:00-05:00","type":"string"},"status":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Initial appointment status (defaults to SCHEDULED if omitted). IN_TREATMENT is allowed when roomId is provided."},"children":[]}]}]}],"enum":["SCHEDULED","CONFIRMED","CHECKED_IN","IN_TREATMENT","CHECKED_OUT","CANCELLED","NO_SHOW"],"example":"CONFIRMED","pattern":"(?i)SCHEDULED|CONFIRMED|CHECKED_IN|IN_TREATMENT|CHECKED_OUT|CANCELLED|NO_SHOW","type":"string"}},"required":["appointmentTypeId","patientId","practitionerId","schedulerConfigId","startTime"],"type":"object"}},"components/schemas/CreateAttemptRequest":{"id":"components/schemas/CreateAttemptRequest","kind":"json-schema","title":"CreateAttemptRequest","data":{"description":"Request to initiate a self-scheduling attempt","properties":{"identityProofId":{"description":"Optional ID of a pre-created identity proof. If provided, verification method must match the setting.","example":456,"format":"int64","type":"integer"},"selfSchedulingSettingId":{"description":"ID of the self-scheduling configuration to use","example":123,"format":"int64","type":"integer"}},"required":["selfSchedulingSettingId"],"type":"object"}},"components/schemas/CreateFormPacketRequest":{"id":"components/schemas/CreateFormPacketRequest","kind":"json-schema","title":"CreateFormPacketRequest","data":{"description":"Request to create a new form packet","properties":{"dueDate":{"description":"Due date for completion (ISO 8601)","example":"2025-01-20T17:00:00-05:00","type":"string"},"formTemplateGroupId":{"description":"Form template group ID. Either formTemplateGroupId or formTemplateIds is required. When both are provided, formTemplateGroupId takes precedence.","example":500,"format":"int64","type":"integer"},"formTemplateIds":{"description":"List of form template IDs to include. Either formTemplateIds or formTemplateGroupId is required.","example":[101,102,103],"items":{"description":"List of form template IDs to include. Either formTemplateIds or formTemplateGroupId is required.","format":"int64","type":"integer"},"type":"array"},"patientId":{"description":"Patient ID","example":67890,"format":"int64","type":"integer"},"prefill":{"additionalProperties":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pre-fill form fields with known data. Keys are form element attribute names (case-insensitive, trimmed) and values are the answer strings. Applied across all forms in the packet — each field whose attribute name matches a key will be pre-filled. Fields without a match are auto-filled from the patient record when possible. Use GET /form/template/{id}/attribute to discover available attribute names."},"children":[]}]}]}],"example":"{\"first_name\":\"John\",\"email\":\"john@example.com\"}","type":"string"},"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pre-fill form fields with known data. Keys are form element attribute names (case-insensitive, trimmed) and values are the answer strings. Applied across all forms in the packet — each field whose attribute name matches a key will be pre-filled. Fields without a match are auto-filled from the patient record when possible. Use GET /form/template/{id}/attribute to discover available attribute names."},"children":[]}]}]}],"example":{"email":"john@example.com","first_name":"John"},"type":"object"},"sendNotification":{"description":"Send notification (email and SMS) to the patient. Defaults to false if not specified.","example":true,"type":"boolean"}},"required":["patientId"],"type":"object"}},"components/schemas/CreatePatientRequest":{"id":"components/schemas/CreatePatientRequest","kind":"json-schema","title":"CreatePatientRequest","data":{"description":"Request to create a new patient","properties":{"dateOfBirth":{"description":"Patient's date of birth in ISO 8601 format (YYYY-MM-DD)","example":"1990-01-15","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"email":{"description":"Patient's email address","example":"john.doe@example.com","format":"email","maxLength":255,"minLength":0,"type":"string"},"firstName":{"description":"Patient's first name","example":"John","maxLength":80,"minLength":1,"type":"string"},"gender":{"description":"Patient's gender. Reference https://www.hl7.org/fhir/R4/codesystem-gender-identity.html for possible values.","example":"Male","type":"string"},"lastName":{"description":"Patient's last name","example":"Doe","maxLength":80,"minLength":1,"type":"string"},"mobilePhone":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Patient's mobile phone number. 10-digit US number, optionally prefixed with '+1' or '1'."},"children":[]}]}]}],"example":"4155551234","maxLength":12,"minLength":0,"pattern":"^\\+?1?\\d{10}$","type":"string"}},"required":["firstName","lastName"],"type":"object"}},"components/schemas/CreateTagRequest":{"id":"components/schemas/CreateTagRequest","kind":"json-schema","title":"CreateTagRequest","data":{"description":"Request to create a patient tag","properties":{"color":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Tag color as a hex code from the Lobbie palette. Defaults to #C1E4FF if omitted. Allowed values: #C1E4FF, #FFF5C4, #F7D8D8, #FAE6E6, #FFCBBA, #DFF8B6, #CBEBD7, #DDF2E5, #FFED8B, #D4DAFF, #FFBABA, #F3EAF6, #B4F595, #DFCCFC."},"children":[]}]}]}],"example":"#C1E4FF","maxLength":10,"minLength":0,"type":"string"},"note":{"description":"Tag text","example":"VIP","maxLength":1000,"minLength":0,"type":"string"}},"required":["note"],"type":"object"}},"components/schemas/CreateUtmRequest":{"id":"components/schemas/CreateUtmRequest","kind":"json-schema","title":"CreateUtmRequest","data":{"description":"Request to set UTM attribution on a self-scheduling attempt","properties":{"adGroup":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"utm_adgroup value"},"children":[]}]}]}],"example":"ad_group_1","maxLength":255,"minLength":0,"type":"string"},"campaign":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"utm_campaign value"},"children":[]}]}]}],"example":"spring_promo","maxLength":255,"minLength":0,"type":"string"},"content":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"utm_content value"},"children":[]}]}]}],"example":"banner_v2","maxLength":255,"minLength":0,"type":"string"},"medium":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"utm_medium value"},"children":[]}]}]}],"example":"cpc","maxLength":255,"minLength":0,"type":"string"},"selfSchedulingAttemptId":{"description":"The self-scheduling attempt to attribute","example":678,"format":"int64","type":"integer"},"source":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"utm_source value"},"children":[]}]}]}],"example":"google","maxLength":255,"minLength":0,"type":"string"},"term":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"utm_term value"},"children":[]}]}]}],"example":"dental implants","maxLength":255,"minLength":0,"type":"string"}},"required":["selfSchedulingAttemptId"],"type":"object"}},"components/schemas/CreateWebhookEndpointRequest":{"id":"components/schemas/CreateWebhookEndpointRequest","kind":"json-schema","title":"CreateWebhookEndpointRequest","data":{"description":"Request to create a webhook endpoint","properties":{"active":{"description":"Whether deliveries are enabled. Defaults to true if omitted.","example":true,"type":"boolean"},"eventTypes":{"description":"Event types to subscribe to. Must be non-empty and every value must match a known event type returned by GET /event-types.","example":["appointment.created","appointment.updated","form.completed"],"items":{"description":"Event types to subscribe to. Must be non-empty and every value must match a known event type returned by GET /event-types.","example":"[\"appointment.created\",\"appointment.updated\",\"form.completed\"]","type":"string"},"type":"array"},"name":{"description":"Name for the endpoint","example":"Production Webhook","type":"string"},"url":{"description":"Webhook URL. Must be HTTPS and include a host.","example":"https://api.example.com/webhooks/lobbie","type":"string"}},"required":["eventTypes","url"],"type":"object"}},"components/schemas/CrmStatusDTO":{"id":"components/schemas/CrmStatusDTO","kind":"json-schema","title":"CrmStatusDTO","data":{"description":"CRM status details","properties":{"active":{"description":"Whether this status is active","example":true,"type":"boolean"},"color":{"description":"Display color (hex code)","example":"#2196F3","type":"string"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"groupId":{"description":"Parent status group ID","example":111,"format":"int64","type":"integer"},"id":{"description":"Unique CRM status identifier","example":12345,"format":"int64","type":"integer"},"isDefault":{"description":"Whether this is the default status in the group (first by sort order)","example":true,"type":"boolean"},"name":{"description":"Status name","example":"New Lead","type":"string"},"sortOrder":{"description":"Sort order for display within the group","example":1,"format":"int32","type":"integer"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/CrmStatusGroupDTO":{"id":"components/schemas/CrmStatusGroupDTO","kind":"json-schema","title":"CrmStatusGroupDTO","data":{"description":"CRM status group details","properties":{"active":{"description":"Whether this group is active","example":true,"type":"boolean"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"id":{"description":"Unique CRM status group identifier","example":12345,"format":"int64","type":"integer"},"name":{"description":"Group name","example":"Lead Stages","type":"string"},"statusCount":{"description":"Number of statuses in this group","example":5,"format":"int32","type":"integer"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/CrmStatusGroupListResponse":{"id":"components/schemas/CrmStatusGroupListResponse","kind":"json-schema","title":"CrmStatusGroupListResponse","data":{"description":"Paginated list of CRM status groups","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"},"statusGroups":{"description":"List of CRM status groups","items":{"$ref":"#/components/schemas/CrmStatusGroupDTO"},"type":"array"}},"type":"object"}},"components/schemas/CrmStatusListResponse":{"id":"components/schemas/CrmStatusListResponse","kind":"json-schema","title":"CrmStatusListResponse","data":{"description":"Paginated list of CRM statuses","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"},"statuses":{"description":"List of CRM statuses","items":{"$ref":"#/components/schemas/CrmStatusDTO"},"type":"array"}},"type":"object"}},"components/schemas/EventTypeListResponse":{"id":"components/schemas/EventTypeListResponse","kind":"json-schema","title":"EventTypeListResponse","data":{"description":"List of available event types","properties":{"eventTypes":{"description":"Event type identifiers sorted alphabetically.","example":["appointment.created","appointment.updated","form.completed"],"items":{"description":"Event type identifiers sorted alphabetically.","example":"[\"appointment.created\",\"appointment.updated\",\"form.completed\"]","type":"string"},"type":"array"}},"type":"object"}},"components/schemas/ExternalIdDTO":{"id":"components/schemas/ExternalIdDTO","kind":"json-schema","title":"ExternalIdDTO","data":{"description":"A foreign-system identifier Lobbie maintains for a patient or location","properties":{"deepLinkUrl":{"description":"Deep link to the record in the external system, when available.","example":"https://app.gohighlevel.com/contact/loc_123/abc123contact","type":"string"},"externalId":{"description":"The foreign-system identifier value","example":"abc123contact","type":"string"},"idType":{"description":"Type of external identifier","example":"CONTACT_ID","type":"string"},"locationId":{"description":"Lobbie location ID this identifier belongs to (both GHL and MX Merchant are location-scoped).","example":1312,"format":"int64","type":"integer"},"patientId":{"description":"Lobbie patient ID this identifier belongs to. Null for location-level IDs.","example":12345,"format":"int64","type":"integer"},"system":{"description":"External system","example":"GHL","type":"string"}},"type":"object"}},"components/schemas/ExternalIdListResponse":{"id":"components/schemas/ExternalIdListResponse","kind":"json-schema","title":"ExternalIdListResponse","data":{"description":"Paginated list of external IDs","properties":{"externalIds":{"description":"List of external IDs in this page","items":{"$ref":"#/components/schemas/ExternalIdDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"}},"type":"object"}},"components/schemas/FormAnswerDTO":{"id":"components/schemas/FormAnswerDTO","kind":"json-schema","title":"FormAnswerDTO","data":{"description":"Form field answer","properties":{"attributeName":{"description":"Field attribute name used for mapping","example":"first_name","type":"string"},"fieldType":{"description":"Field type","enum":["TEXT","TEXTAREA","SELECT","CHECKBOX","RADIO","DATE","SIGNATURE","FILE"],"example":"TEXT","type":"string"},"formElementId":{"description":"Form element/field ID","example":11111,"format":"int64","type":"integer"},"label":{"description":"Field label","example":"First Name","type":"string"},"selectedOptions":{"description":"Selected options (for multi-select fields)","items":{"description":"Selected options (for multi-select fields)","type":"string"},"type":"array"},"value":{"description":"Answer value","example":"John","type":"string"}},"type":"object"}},"components/schemas/FormAttributeDTO":{"id":"components/schemas/FormAttributeDTO","kind":"json-schema","title":"FormAttributeDTO","data":{"description":"Form attribute mapping","properties":{"elementType":{"description":"Element type","example":"TEXT","type":"string"},"formElementId":{"description":"Associated form element ID","example":11111,"format":"int64","type":"integer"},"isLobbieAttribute":{"description":"Whether this is a Lobbie standard attribute","example":true,"type":"boolean"},"label":{"description":"Field label","example":"First Name","type":"string"},"name":{"description":"Attribute name used for mapping","example":"first_name","type":"string"}},"type":"object"}},"components/schemas/FormAttributeListResponse":{"id":"components/schemas/FormAttributeListResponse","kind":"json-schema","title":"FormAttributeListResponse","data":{"description":"List of form attributes","properties":{"attributes":{"description":"List of mapped attributes","items":{"$ref":"#/components/schemas/FormAttributeDTO"},"type":"array"},"formTemplateId":{"description":"Form template ID","example":12345,"format":"int64","type":"integer"},"formTemplateName":{"description":"Form template name","example":"Patient Intake Form","type":"string"}},"type":"object"}},"components/schemas/FormDTO":{"id":"components/schemas/FormDTO","kind":"json-schema","title":"FormDTO","data":{"description":"Individual form with answers","properties":{"answers":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Form answers (included when includeAnswers=true)"},"children":[]}]}]}],"items":{"$ref":"#/components/schemas/FormAnswerDTO"},"type":"array"},"formTemplateId":{"description":"Form template ID","example":999,"format":"int64","type":"integer"},"formTemplateName":{"description":"Form template name","example":"Patient Intake Form","type":"string"},"id":{"description":"Unique form identifier","example":54321,"format":"int64","type":"integer"},"isComplete":{"description":"Whether this form is complete","example":true,"type":"boolean"},"status":{"description":"Form status","enum":["IN_PROGRESS","COMPLETED"],"example":"COMPLETED","type":"string"}},"type":"object"}},"components/schemas/FormElementDTO":{"id":"components/schemas/FormElementDTO","kind":"json-schema","title":"FormElementDTO","data":{"description":"Form element (field) within a template","properties":{"attributeName":{"description":"Mapped attribute name for data mapping","example":"first_name","type":"string"},"colClass":{"description":"Column width class (1-12)","example":6,"format":"int32","type":"integer"},"id":{"description":"Unique element identifier","example":11111,"format":"int64","type":"integer"},"isPatientViewable":{"description":"Whether this field is visible to patients","example":true,"type":"boolean"},"isRequired":{"description":"Whether this field is required","example":true,"type":"boolean"},"label":{"description":"Field label displayed to users","example":"First Name","type":"string"},"options":{"description":"Available options for select/radio/checkbox fields","items":{"$ref":"#/components/schemas/FormSelectOptionDTO"},"type":"array"},"parentElementId":{"description":"Parent element ID for nested child elements (null for top-level)","example":11110,"format":"int64","type":"integer"},"placeholder":{"description":"Placeholder text","example":"Enter your first name","type":"string"},"sortOrder":{"description":"Display order within the form","example":1,"format":"int32","type":"integer"},"type":{"description":"Element type","enum":["TEXT","TEXTAREA","SELECT","MULTI_SELECT","CHECKBOX","RADIO","DATE","TIME","DATETIME","SIGNATURE","FILE","IMAGE","HEADER","PARAGRAPH"],"example":"TEXT","type":"string"}},"type":"object"}},"components/schemas/FormElementListResponse":{"id":"components/schemas/FormElementListResponse","kind":"json-schema","title":"FormElementListResponse","data":{"description":"List of form elements","properties":{"elements":{"description":"List of form elements","items":{"$ref":"#/components/schemas/FormElementDTO"},"type":"array"},"formTemplateId":{"description":"Form template ID","example":12345,"format":"int64","type":"integer"},"formTemplateName":{"description":"Form template name","example":"Patient Intake Form","type":"string"}},"type":"object"}},"components/schemas/FormPacketDTO":{"id":"components/schemas/FormPacketDTO","kind":"json-schema","title":"FormPacketDTO","data":{"description":"Form packet (group of forms assigned to a patient)","properties":{"completedAt":{"description":"Completion timestamp. Not monotonic: can transition back to null and re-set if forms are added to a completed packet, an EHR sync retracts completion, or staff manually clear it. Treat each form-packet.updated event as a state snapshot, not a terminal completion signal.","example":"2025-01-18T14:30:00-05:00","format":"date-time","type":"string"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"dueDate":{"description":"Due date for completion (ISO 8601)","example":"2025-01-20T17:00:00-05:00","format":"date-time","type":"string"},"formTemplateIds":{"description":"Form template IDs for the forms in this packet","example":[101,102],"items":{"description":"Form template IDs for the forms in this packet","format":"int64","type":"integer"},"type":"array"},"id":{"description":"Unique form packet identifier","example":12345,"format":"int64","type":"integer"},"isActive":{"description":"Whether the form packet is active. Inactive packets have been deactivated by the system (e.g. via appointment cancellation).","example":true,"type":"boolean"},"isArchived":{"description":"Whether the form packet has been archived via DELETE or PUT.","example":false,"type":"boolean"},"locationId":{"description":"Location ID","example":111,"format":"int64","type":"integer"},"locationName":{"description":"Location name","example":"Main Street Clinic","type":"string"},"patientId":{"description":"Patient ID","example":67890,"format":"int64","type":"integer"},"patientName":{"description":"Patient name","example":"John Doe","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/FormPacketLinksDTO":{"id":"components/schemas/FormPacketLinksDTO","kind":"json-schema","title":"FormPacketLinksDTO","data":{"description":"Patient-facing and staff-facing URLs for a form packet","properties":{"formPacketId":{"description":"Form packet ID","example":12345,"format":"int64","type":"integer"},"patientUrl":{"description":"Patient-facing URL to complete forms","type":"string"},"staffUrl":{"description":"Staff-facing URL to view/edit forms","type":"string"}},"type":"object"}},"components/schemas/FormPacketListResponse":{"id":"components/schemas/FormPacketListResponse","kind":"json-schema","title":"FormPacketListResponse","data":{"description":"Paginated list of form packets","properties":{"formPackets":{"description":"List of form packets in this page","items":{"$ref":"#/components/schemas/FormPacketDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"}},"type":"object"}},"components/schemas/FormSelectOptionDTO":{"id":"components/schemas/FormSelectOptionDTO","kind":"json-schema","title":"FormSelectOptionDTO","data":{"description":"Select option for dropdown/radio/checkbox fields","properties":{"id":{"description":"Option ID","example":22222,"format":"int64","type":"integer"},"sortOrder":{"description":"Display order","example":1,"format":"int32","type":"integer"},"text":{"description":"Option display text","example":"Male","type":"string"}},"type":"object"}},"components/schemas/FormTemplateDTO":{"id":"components/schemas/FormTemplateDTO","kind":"json-schema","title":"FormTemplateDTO","data":{"description":"Form template definition","properties":{"appointmentTypeIds":{"description":"Associated appointment type IDs","items":{"description":"Associated appointment type IDs","format":"int64","type":"integer"},"type":"array"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"elementCount":{"description":"Total number of form elements including nested child elements","example":15,"format":"int32","type":"integer"},"elements":{"description":"Form elements/fields (if requested)","items":{"$ref":"#/components/schemas/FormElementDTO"},"type":"array"},"id":{"description":"Unique form template identifier","example":12345,"format":"int64","type":"integer"},"isActive":{"description":"Whether this template is active","example":true,"type":"boolean"},"isDirectlyLinkable":{"description":"Whether this template can be directly linked (public form)","example":true,"type":"boolean"},"isFillablePdf":{"description":"Whether this template is a fillable PDF","example":false,"type":"boolean"},"isStaffOnly":{"description":"Whether this template is staff-only (not visible to patients)","example":false,"type":"boolean"},"name":{"description":"Template name","example":"Patient Intake Form","type":"string"},"publicLink":{"description":"Public link for directly linkable templates","example":"https://forms.lobbie.com/t/abc123","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/FormTemplateGroupDTO":{"id":"components/schemas/FormTemplateGroupDTO","kind":"json-schema","title":"FormTemplateGroupDTO","data":{"description":"Form template group (bundle of templates)","properties":{"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"id":{"description":"Unique group identifier","example":500,"format":"int64","type":"integer"},"isActive":{"description":"Whether this group is active","example":true,"type":"boolean"},"locationId":{"description":"Associated location ID (null if available to all locations)","format":"int64","type":"integer"},"name":{"description":"Group name","example":"New Patient Intake Packet","type":"string"},"practitionerId":{"description":"Associated practitioner ID","format":"int64","type":"integer"},"templateCount":{"description":"Number of templates in this group","example":3,"format":"int32","type":"integer"},"templates":{"description":"Templates included in this group","items":{"$ref":"#/components/schemas/FormTemplateSummaryDTO"},"type":"array"}},"type":"object"}},"components/schemas/FormTemplateGroupListResponse":{"id":"components/schemas/FormTemplateGroupListResponse","kind":"json-schema","title":"FormTemplateGroupListResponse","data":{"description":"Paginated list of form template groups","properties":{"groups":{"description":"List of form template groups in this page","items":{"$ref":"#/components/schemas/FormTemplateGroupDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"}},"type":"object"}},"components/schemas/FormTemplateListItemDTO":{"id":"components/schemas/FormTemplateListItemDTO","kind":"json-schema","title":"FormTemplateListItemDTO","data":{"description":"Form template summary for list responses (without elements)","properties":{"appointmentTypeIds":{"description":"Associated appointment type IDs","items":{"description":"Associated appointment type IDs","format":"int64","type":"integer"},"type":"array"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"elementCount":{"description":"Total number of form elements including nested child elements","example":15,"format":"int32","type":"integer"},"id":{"description":"Unique form template identifier","example":12345,"format":"int64","type":"integer"},"isActive":{"description":"Whether this template is active","example":true,"type":"boolean"},"isDirectlyLinkable":{"description":"Whether this template can be directly linked (public form)","example":true,"type":"boolean"},"isFillablePdf":{"description":"Whether this template is a fillable PDF","example":false,"type":"boolean"},"isStaffOnly":{"description":"Whether this template is staff-only (not visible to patients)","example":false,"type":"boolean"},"name":{"description":"Template name","example":"Patient Intake Form","type":"string"},"publicLink":{"description":"Public link for directly linkable templates","example":"https://forms.lobbie.com/t/abc123","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/FormTemplateListResponse":{"id":"components/schemas/FormTemplateListResponse","kind":"json-schema","title":"FormTemplateListResponse","data":{"description":"Paginated list of form templates","properties":{"formTemplates":{"description":"List of form templates in this page","items":{"$ref":"#/components/schemas/FormTemplateListItemDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"}},"type":"object"}},"components/schemas/FormTemplateSummaryDTO":{"id":"components/schemas/FormTemplateSummaryDTO","kind":"json-schema","title":"FormTemplateSummaryDTO","data":{"description":"Summary of a form template (used in group listings)","properties":{"elementCount":{"description":"Total number of form elements including nested child elements","example":15,"format":"int32","type":"integer"},"id":{"description":"Template ID","example":12345,"format":"int64","type":"integer"},"isActive":{"description":"Whether this template is active","example":true,"type":"boolean"},"name":{"description":"Template name","example":"Patient Intake Form","type":"string"}},"type":"object"}},"components/schemas/IdentityProofCreateRequest":{"id":"components/schemas/IdentityProofCreateRequest","kind":"json-schema","title":"IdentityProofCreateRequest","data":{"description":"Request to create identity proof","properties":{"verificationMethod":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Verification method (EMAIL, SMS, or EMAIL_AND_SMS). Case-insensitive."},"children":[]}]}]}],"enum":["EMAIL","SMS","EMAIL_AND_SMS"],"example":"EMAIL_AND_SMS","type":"string"},"verificationMethodEnum":{"enum":["EMAIL","SMS","EMAIL_AND_SMS","PAPER","NULL"],"type":"string"}},"required":["verificationMethod"],"type":"object"}},"components/schemas/IdentityProofResponse":{"id":"components/schemas/IdentityProofResponse","kind":"json-schema","title":"IdentityProofResponse","data":{"description":"Identity proof response","properties":{"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"id":{"description":"Identity proof ID (use this in subsequent requests)","example":12345,"format":"int64","type":"integer"},"isVerified":{"description":"Whether all required verification methods have been completed","example":false,"type":"boolean"},"token":{"description":"Secure token for X-Identity-Token header","example":"abc123...","type":"string"},"verificationMethod":{"description":"Verification method","enum":["EMAIL","SMS","EMAIL_AND_SMS","PAPER","NULL"],"example":"EMAIL_AND_SMS","type":"string"},"verifiedEmail":{"description":"Verified email (if verified)","example":"john@example.com","type":"string"},"verifiedPhone":{"description":"Verified phone (if verified)","example":"5551234567","type":"string"}},"type":"object"}},"components/schemas/IdentityProofStatusResponse":{"id":"components/schemas/IdentityProofStatusResponse","kind":"json-schema","title":"IdentityProofStatusResponse","data":{"description":"Identity proof status response","properties":{"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"id":{"description":"Identity proof ID","example":12345,"format":"int64","type":"integer"},"isVerified":{"description":"Whether all required verification methods have been completed","example":false,"type":"boolean"},"missingVerifications":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Array of verification methods still pending (e.g., [\"EMAIL\"], [\"SMS\"], [\"EMAIL\", \"SMS\"], or [])"},"children":[]}]}]}],"example":["SMS"],"items":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Array of verification methods still pending (e.g., [\"EMAIL\"], [\"SMS\"], [\"EMAIL\", \"SMS\"], or [])"},"children":[]}]}]}],"example":"[\"SMS\"]","type":"string"},"type":"array"},"verificationMethod":{"description":"Verification method","enum":["EMAIL","SMS","EMAIL_AND_SMS","PAPER","NULL"],"example":"EMAIL_AND_SMS","type":"string"},"verifiedEmail":{"description":"Verified email (if verified)","example":"john@example.com","type":"string"},"verifiedPhone":{"description":"Verified phone (if verified)","example":"5551234567","type":"string"}},"type":"object"}},"components/schemas/InvoiceDTO":{"id":"components/schemas/InvoiceDTO","kind":"json-schema","title":"InvoiceDTO","data":{"description":"Invoice","properties":{"appointmentId":{"description":"Appointment ID when applicable","example":700,"format":"int64","type":"integer"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"currency":{"description":"ISO 4217 currency code. May be null for legacy invoices without a resolved currency.","example":"USD","type":"string"},"discount":{"$ref":"#/components/schemas/Money"},"dueOn":{"description":"Due date (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"externalId":{"description":"External identifier from the processor or integrator","example":"ext_inv_001","type":"string"},"id":{"description":"Invoice ID","example":1234,"format":"int64","type":"integer"},"lineItems":{"description":"Line items (present on single-invoice responses only)","items":{"$ref":"#/components/schemas/InvoiceLineItemDTO"},"type":"array"},"locationId":{"description":"Location ID","example":200,"format":"int64","type":"integer"},"note":{"description":"Invoice note","example":"Balance due at checkout","type":"string"},"patientId":{"description":"Patient ID","example":300,"format":"int64","type":"integer"},"paymentCustomerId":{"description":"Payment customer ID. May be null for legacy invoices without a resolved payment customer.","example":400,"format":"int64","type":"integer"},"purchaseOrderId":{"description":"Purchase order ID when the invoice is tied to an order","example":500,"format":"int64","type":"integer"},"status":{"description":"Invoice status","enum":["DRAFT","OPEN","PAID","VOID","UNCOLLECTIBLE"],"example":"OPEN","type":"string"},"subscriptionId":{"description":"Subscription ID when the invoice is subscription-based","example":600,"format":"int64","type":"integer"},"subtotal":{"$ref":"#/components/schemas/Money"},"tax":{"$ref":"#/components/schemas/Money"},"totalAmount":{"$ref":"#/components/schemas/Money"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/InvoiceLineItemDTO":{"id":"components/schemas/InvoiceLineItemDTO","kind":"json-schema","title":"InvoiceLineItemDTO","data":{"description":"Invoice line item","properties":{"amount":{"$ref":"#/components/schemas/Money"},"billingCode":{"description":"Billing code","example":"99213","type":"string"},"discount":{"$ref":"#/components/schemas/Money"},"id":{"description":"Line item ID","example":9001,"format":"int64","type":"integer"},"itemId":{"description":"Catalog item ID","example":42,"format":"int64","type":"integer"},"itemType":{"description":"Catalog item type","example":"SERVICE","type":"string"},"name":{"description":"Display name","example":"Office visit","type":"string"},"quantity":{"description":"Quantity","example":1,"format":"int32","type":"integer"},"tax":{"$ref":"#/components/schemas/Money"},"taxRate":{"description":"Tax rate (decimal)","example":0.0825,"type":"number"},"unitPrice":{"$ref":"#/components/schemas/Money"}},"type":"object"}},"components/schemas/InvoiceListResponse":{"id":"components/schemas/InvoiceListResponse","kind":"json-schema","title":"InvoiceListResponse","data":{"description":"Paginated list of invoices","properties":{"invoices":{"description":"List of invoices","items":{"$ref":"#/components/schemas/InvoiceDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page","type":"string"}},"type":"object"}},"components/schemas/ItemDTO":{"id":"components/schemas/ItemDTO","kind":"json-schema","title":"ItemDTO","data":{"description":"Item details","properties":{"active":{"description":"Whether this item is active","example":true,"type":"boolean"},"billingCode":{"description":"Billing code","example":"36415","type":"string"},"categoryId":{"description":"Category ID","example":456,"format":"int64","type":"integer"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"id":{"description":"Unique item identifier","example":12345,"format":"int64","type":"integer"},"name":{"description":"Item name","example":"Blood Draw","type":"string"},"price":{"$ref":"#/components/schemas/Money"},"taxable":{"description":"Whether this item is taxable","example":false,"type":"boolean"},"type":{"description":"Item type","enum":["SERVICE","SUPPLY"],"example":"SERVICE","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/ItemListResponse":{"id":"components/schemas/ItemListResponse","kind":"json-schema","title":"ItemListResponse","data":{"description":"Paginated list of items","properties":{"items":{"description":"List of items","items":{"$ref":"#/components/schemas/ItemDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"}},"type":"object"}},"components/schemas/LabDTO":{"id":"components/schemas/LabDTO","kind":"json-schema","title":"LabDTO","data":{"description":"Lab order/result","properties":{"appointmentId":{"description":"Associated appointment ID","format":"int64","type":"integer"},"collectedOn":{"description":"Collection date","example":"2025-01-15T09:30:00Z","format":"date-time","type":"string"},"completedOn":{"description":"Completion date","example":"2025-01-16T14:00:00Z","format":"date-time","type":"string"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"drawnBy":{"description":"Drawn by (staff name)","example":"Jane Smith","type":"string"},"entryOn":{"description":"Entry date","example":"2025-01-15T10:00:00Z","format":"date-time","type":"string"},"externalResult":{"description":"Whether from external source","example":true,"type":"boolean"},"id":{"description":"Unique lab identifier","example":12345,"format":"int64","type":"integer"},"locationId":{"description":"Location ID","example":111,"format":"int64","type":"integer"},"locked":{"description":"Whether lab is locked for editing","example":true,"type":"boolean"},"manual":{"description":"Whether manually entered","example":false,"type":"boolean"},"notes":{"description":"Notes","example":"Fasting specimen","type":"string"},"patientId":{"description":"Patient ID","example":67890,"format":"int64","type":"integer"},"patientName":{"description":"Patient name","example":"John Doe","type":"string"},"status":{"description":"Lab status","enum":["PROCESSING","COMPLETE","ORDER_ERROR"],"example":"COMPLETE","type":"string"},"testComponents":{"description":"All test results for this lab.","items":{"$ref":"#/components/schemas/TestComponentDTO"},"type":"array"},"thirdPartyLabId":{"description":"External lab ID from vendor","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"vendorName":{"description":"Vendor name","example":"Labcorp","type":"string"},"vendorType":{"description":"Lab vendor type","enum":["IN_HOUSE","LABCORP","PRIME","BRIO","SPOTDX","OTHER"],"example":"LABCORP","type":"string"}},"type":"object"}},"components/schemas/LabListResponse":{"id":"components/schemas/LabListResponse","kind":"json-schema","title":"LabListResponse","data":{"description":"Paginated list of labs","properties":{"labs":{"description":"List of labs","items":{"$ref":"#/components/schemas/LabDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page","type":"string"}},"type":"object"}},"components/schemas/LocationDTO":{"id":"components/schemas/LocationDTO","kind":"json-schema","title":"LocationDTO","data":{"description":"Location record with address information","properties":{"active":{"description":"Whether the location is active","example":true,"type":"boolean"},"address":{"$ref":"#/components/schemas/AddressDTO"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"id":{"description":"Unique location identifier","example":12345,"format":"int64","type":"integer"},"name":{"description":"Location name","example":"Main Street Clinic","type":"string"},"phoneNumber":{"description":"Location phone number (digits only)","example":"5551234567","type":"string"},"storeId":{"description":"Partner's external store identifier","example":"STORE123","type":"string"},"timeZone":{"description":"Location timezone (IANA format)","example":"America/New_York","type":"string"}},"type":"object"}},"components/schemas/LocationListResponse":{"id":"components/schemas/LocationListResponse","kind":"json-schema","title":"LocationListResponse","data":{"description":"Paginated list of locations with cursor for next page","properties":{"locations":{"description":"List of locations in this page","items":{"$ref":"#/components/schemas/LocationDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","example":"eyJ2Ijp7Im5hbWUiOiJNYWluIFN0cmVldCJ9LCJpZCI6MTIzNDV9","type":"string"}},"type":"object"}},"components/schemas/MedicationDTO":{"id":"components/schemas/MedicationDTO","kind":"json-schema","title":"MedicationDTO","data":{"description":"Patient medication","properties":{"active":{"description":"Whether this record is active","example":true,"type":"boolean"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"createdBy":{"description":"Created by (staff name)","example":"Dr. Jane Smith","type":"string"},"diagnoses":{"description":"Related diagnoses","items":{"$ref":"#/components/schemas/MedicationDiagnosisDTO"},"type":"array"},"directions":{"description":"Dosage/usage instructions","example":"Take 1 tablet by mouth daily","type":"string"},"endDate":{"description":"End date","example":"2023-03-01","format":"date","type":"string"},"id":{"description":"Unique medication identifier","example":12345,"format":"int64","type":"integer"},"name":{"description":"Medication name","example":"Lisinopril 10mg","type":"string"},"patientId":{"description":"Patient ID","example":67890,"format":"int64","type":"integer"},"referenceId":{"description":"Drug code identifier (NDC, RxNorm)","example":"68180-513-01","type":"string"},"startDate":{"description":"Start date","example":"2022-03-01","format":"date","type":"string"},"status":{"description":"Medication status","enum":["ACTIVE","ON_HOLD","DISCONTINUED","COMPLETED","UNKNOWN"],"example":"ACTIVE","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"updatedBy":{"description":"Last updated by (staff name)","example":"Dr. Jane Smith","type":"string"}},"type":"object"}},"components/schemas/MedicationDiagnosisDTO":{"id":"components/schemas/MedicationDiagnosisDTO","kind":"json-schema","title":"MedicationDiagnosisDTO","data":{"description":"Diagnosis linked to a medication","properties":{"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"createdBy":{"description":"Created by (staff name)","example":"Dr. Jane Smith","type":"string"},"diagnosisCode":{"description":"Diagnosis code (ICD-10)","example":"I10","type":"string"},"diagnosisText":{"description":"Diagnosis description","example":"Essential (primary) hypertension","type":"string"},"id":{"description":"Unique diagnosis identifier","example":12345,"format":"int64","type":"integer"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"updatedBy":{"description":"Last updated by (staff name)","example":"Dr. Jane Smith","type":"string"}},"type":"object"}},"components/schemas/MedicationListResponse":{"id":"components/schemas/MedicationListResponse","kind":"json-schema","title":"MedicationListResponse","data":{"description":"List of medications","properties":{"medications":{"description":"List of medications","items":{"$ref":"#/components/schemas/MedicationDTO"},"type":"array"}},"type":"object"}},"components/schemas/Money":{"id":"components/schemas/Money","kind":"json-schema","title":"Money","data":{"description":"Monetary amount","properties":{"amount":{"description":"Decimal amount","example":50,"type":"number"},"currency":{"description":"ISO 4217 currency code","example":"USD","type":"string"}},"type":"object"}},"components/schemas/NotificationDTO":{"id":"components/schemas/NotificationDTO","kind":"json-schema","title":"NotificationDTO","data":{"description":"Notification details with independent email and SMS status tracking","properties":{"appointmentId":{"description":"Related appointment ID if applicable","example":111,"format":"int64","type":"integer"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"emailProcessedAt":{"description":"When the email was processed","example":"2025-01-15T09:00:05Z","format":"date-time","type":"string"},"emailStatus":{"description":"Email delivery status","enum":["UNPROCESSED","PROCESSED_SENT","PROCESSED_UNSENT"],"example":"PROCESSED_SENT","type":"string"},"formGroupId":{"description":"Related form group ID if applicable","example":222,"format":"int64","type":"integer"},"id":{"description":"Unique notification identifier","example":12345,"format":"int64","type":"integer"},"notificationGroupId":{"description":"Notification group ID this notification belongs to","example":999,"format":"int64","type":"integer"},"patientId":{"description":"Patient ID who received the notification","example":67890,"format":"int64","type":"integer"},"scheduledAt":{"description":"When the notification is scheduled to be sent","example":"2025-01-15T09:00:00Z","format":"date-time","type":"string"},"smsProcessedAt":{"description":"When the SMS was processed","example":"2025-01-15T09:00:05Z","format":"date-time","type":"string"},"smsStatus":{"description":"SMS delivery status","enum":["UNPROCESSED","PROCESSED_SENT","PROCESSED_UNSENT"],"example":"PROCESSED_SENT","type":"string"},"type":{"description":"Notification type","enum":["STAFF_WELCOME","PATIENT_WELCOME","APPOINTMENT_CONFIRMATION","APPOINTMENT_CHECKIN","APPOINTMENT_RESCHEDULE","APPOINTMENT_SCHEDULE_DATE","APPOINTMENT_SCHEDULE_TIME","APPOINTMENT_ROOM_READY","PASSWORD_RESET","APPOINTMENT_SCHEDULED","APPOINTMENT_WAIT_APOLOGY","SMS_CONFIRM_CODE","EMAIL_CONFIRM_CODE","APPOINTMENT_FORM_ADDED","APPOINTMENT_OAM_OFFER","APPOINTMENT_TELEHEALTH_LINK","FORMS_ASSIGNMENT","FORMS_NOTIFY_STAFF_ON_COMPLETE","FORMS_ADDED_NO_APPOINTMENT","SUPPORT_EMAIL","APPOINTMENT_NOTIFY_STAFF_APPOINTMENT_SCHEDULED_VIA_SELF_SCHEDULING","APPOINTMENT_CANCELED","NPS_SURVEY","DO_NOT_SEND","GENERAL_INCOMING_MESSAGE_RESPONSE","NPS_INVITATION","NPS_SURVEY_NOTIFY_STAFF_ON_COMPLETE","NOTIFY_STAFF_APPOINTMENT_CANCELED_BY_PATIENT","PAYMENT_REQUEST_SENT_TO_PATIENT","PAYMENT_REQUEST_REMINDER_TO_PATIENT","PATIENT_PORTAL_INVITE"],"example":"APPOINTMENT_CONFIRMATION","type":"string"}},"type":"object"}},"components/schemas/NotificationGroupDTO":{"id":"components/schemas/NotificationGroupDTO","kind":"json-schema","title":"NotificationGroupDTO","data":{"description":"Notification group details","properties":{"appointmentId":{"description":"Related appointment ID if applicable","example":111,"format":"int64","type":"integer"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"formGroupId":{"description":"Related form group ID if applicable","example":222,"format":"int64","type":"integer"},"id":{"description":"Unique notification group identifier","example":12345,"format":"int64","type":"integer"},"lastEmailSentAt":{"description":"When the last email was sent from this group","example":"2025-01-15T09:00:00Z","format":"date-time","type":"string"},"lastSmsSentAt":{"description":"When the last SMS was sent from this group","example":"2025-01-15T09:00:00Z","format":"date-time","type":"string"},"notificationCount":{"description":"Number of notifications in this group","example":5,"format":"int32","type":"integer"},"paymentRequestId":{"description":"Related payment request ID if applicable","example":333,"format":"int64","type":"integer"}},"type":"object"}},"components/schemas/NotificationGroupListResponse":{"id":"components/schemas/NotificationGroupListResponse","kind":"json-schema","title":"NotificationGroupListResponse","data":{"description":"Paginated list of notification groups","properties":{"groups":{"description":"List of notification groups","items":{"$ref":"#/components/schemas/NotificationGroupDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"}},"type":"object"}},"components/schemas/NotificationListResponse":{"id":"components/schemas/NotificationListResponse","kind":"json-schema","title":"NotificationListResponse","data":{"description":"Paginated list of notifications","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"},"notifications":{"description":"List of notifications in this page","items":{"$ref":"#/components/schemas/NotificationDTO"},"type":"array"}},"type":"object"}},"components/schemas/OrderDTO":{"id":"components/schemas/OrderDTO","kind":"json-schema","title":"OrderDTO","data":{"description":"Purchase order","properties":{"appointmentId":{"description":"Appointment ID when applicable","example":700,"format":"int64","type":"integer"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"id":{"description":"Order ID","example":1234,"format":"int64","type":"integer"},"lineItems":{"description":"Line items (present on single-order responses only)","items":{"$ref":"#/components/schemas/OrderLineItemDTO"},"type":"array"},"locationId":{"description":"Location ID","example":200,"format":"int64","type":"integer"},"patientId":{"description":"Patient ID","example":300,"format":"int64","type":"integer"},"paymentCustomerId":{"description":"Payment customer ID","example":400,"format":"int64","type":"integer"},"status":{"description":"Order status","enum":["DRAFT","PENDING","CANCELED","SUBMITTED","VOID"],"example":"PENDING","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/OrderLineItemDTO":{"id":"components/schemas/OrderLineItemDTO","kind":"json-schema","title":"OrderLineItemDTO","data":{"description":"Order line item","properties":{"amount":{"$ref":"#/components/schemas/Money"},"billingCode":{"description":"Billing code","example":"99213","type":"string"},"discount":{"$ref":"#/components/schemas/Money"},"id":{"description":"Line item ID","example":9001,"format":"int64","type":"integer"},"itemId":{"description":"Catalog item ID","example":42,"format":"int64","type":"integer"},"itemType":{"description":"Catalog item type","example":"SERVICE","type":"string"},"name":{"description":"Display name","example":"Office visit","type":"string"},"quantity":{"description":"Quantity","example":1,"format":"int32","type":"integer"},"subscriptionId":{"description":"Subscription ID linked to this line item","example":50,"format":"int64","type":"integer"},"tax":{"$ref":"#/components/schemas/Money"},"taxRate":{"description":"Tax rate (decimal)","example":0.0825,"type":"number"},"unitPrice":{"$ref":"#/components/schemas/Money"}},"type":"object"}},"components/schemas/OrderListResponse":{"id":"components/schemas/OrderListResponse","kind":"json-schema","title":"OrderListResponse","data":{"description":"Paginated list of orders","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page","type":"string"},"orders":{"description":"List of orders","items":{"$ref":"#/components/schemas/OrderDTO"},"type":"array"}},"type":"object"}},"components/schemas/PartnerError":{"id":"components/schemas/PartnerError","kind":"json-schema","title":"PartnerError","data":{"description":"Standard Partner API error envelope. Returned for every non-2xx response.","properties":{"error":{"$ref":"#/components/schemas/PartnerErrorBody"}},"required":["error"],"type":"object"}},"components/schemas/PartnerErrorBody":{"id":"components/schemas/PartnerErrorBody","kind":"json-schema","title":"PartnerErrorBody","data":{"description":"Error envelope body.","properties":{"code":{"description":"Stable, machine-readable error code. Use this to branch in client code.","example":"VALIDATION_ERROR","type":"string"},"fields":{"description":"Per-field validation errors. Present on validation failures (HTTP 422) and omitted otherwise.","items":{"$ref":"#/components/schemas/PartnerErrorFieldError"},"type":"array"},"message":{"description":"Human-readable error message. May change between releases; do not rely on exact wording.","example":"Validation failed. See fields for details.","type":"string"}},"required":["code","message"],"type":"object"}},"components/schemas/PartnerErrorFieldError":{"id":"components/schemas/PartnerErrorFieldError","kind":"json-schema","title":"PartnerErrorFieldError","data":{"description":"Validation error for a single request field.","properties":{"message":{"description":"Human-readable explanation of why the field is invalid.","example":"must be 10 digits","type":"string"},"property":{"description":"JSON property path of the invalid field, in dot notation.","example":"phone","type":"string"}},"required":["message","property"],"type":"object"}},"components/schemas/PartnerUtmDTO":{"id":"components/schemas/PartnerUtmDTO","kind":"json-schema","title":"PartnerUtmDTO","data":{"description":"UTM attribution parameters associated with an appointment or self-scheduling attempt","properties":{"adGroup":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"utm_adgroup value"},"children":[]}]}]}],"example":"ad_group_1","type":"string"},"appointmentId":{"description":"Appointment this UTM is attributed to; null if the attempt has not converted","example":12345,"format":"int64","type":"integer"},"campaign":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"utm_campaign value"},"children":[]}]}]}],"example":"spring_promo","type":"string"},"capturedAt":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UTM capture timestamp (UTC) — the value the startDate/endDate filters range over"},"children":[]}]}]}],"example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"content":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"utm_content value"},"children":[]}]}]}],"example":"banner_v2","type":"string"},"medium":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"utm_medium value"},"children":[]}]}]}],"example":"cpc","type":"string"},"selfSchedulingAttemptId":{"description":"Self-scheduling attempt this UTM was captured on; null if not captured via self-scheduling (e.g. GoHighLevel/staff)","example":678,"format":"int64","type":"integer"},"source":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"utm_source value"},"children":[]}]}]}],"example":"google","type":"string"},"stage":{"description":"Funnel stage: CONVERTED once attributed to an appointment, otherwise LANDED","enum":["CONVERTED","LANDED"],"example":"CONVERTED","type":"string"},"term":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"utm_term value"},"children":[]}]}]}],"example":"dental implants","type":"string"}},"type":"object"}},"components/schemas/PartnerUtmListResponse":{"id":"components/schemas/PartnerUtmListResponse","kind":"json-schema","title":"PartnerUtmListResponse","data":{"description":"Paginated list of UTM attribution records","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"},"utms":{"description":"UTM records in this page","items":{"$ref":"#/components/schemas/PartnerUtmDTO"},"type":"array"}},"type":"object"}},"components/schemas/PatientAddressDTO":{"id":"components/schemas/PatientAddressDTO","kind":"json-schema","title":"PatientAddressDTO","data":{"description":"Structured postal address","properties":{"city":{"description":"City","example":"San Francisco","type":"string"},"line1":{"description":"Street address line 1","example":"123 Main St","type":"string"},"line2":{"description":"Street address line 2","example":"Apt 4B","type":"string"},"postalCode":{"description":"Postal/ZIP code","example":"94105","type":"string"},"stateRegion":{"description":"State or region","example":"CA","type":"string"}},"type":"object"}},"components/schemas/PatientCategoryDTO":{"id":"components/schemas/PatientCategoryDTO","kind":"json-schema","title":"PatientCategoryDTO","data":{"description":"Patient category assignment","properties":{"active":{"description":"Whether this category assignment is active","example":true,"type":"boolean"},"assignedAt":{"description":"When the patient was assigned to the current status","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"assignedBy":{"description":"Who assigned the category (staff name or 'System')","example":"Jane Smith","type":"string"},"categoryColor":{"description":"Category color (hex code)","example":"#4CAF50","type":"string"},"categoryId":{"description":"Category ID","example":111,"format":"int64","type":"integer"},"categoryName":{"description":"Category name","example":"Active Patient","type":"string"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"crmStatusColor":{"description":"Current CRM status color (hex code)","example":"#4CAF50","type":"string"},"crmStatusId":{"description":"Current CRM status ID","example":11,"format":"int64","type":"integer"},"crmStatusName":{"description":"Current CRM status name","example":"Qualified","type":"string"},"id":{"description":"Patient category enrollment ID","example":99,"format":"int64","type":"integer"},"patientId":{"description":"Patient ID","example":12345,"format":"int64","type":"integer"}},"type":"object"}},"components/schemas/PatientCategoryListResponse":{"id":"components/schemas/PatientCategoryListResponse","kind":"json-schema","title":"PatientCategoryListResponse","data":{"description":"Paginated list of patient category assignments","properties":{"categories":{"description":"List of patient category assignments","items":{"$ref":"#/components/schemas/PatientCategoryDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"}},"type":"object"}},"components/schemas/PatientListResponse":{"id":"components/schemas/PatientListResponse","kind":"json-schema","title":"PatientListResponse","data":{"description":"Paginated list of patients with cursor for next page","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","example":"eyJ2Ijp7ImZpcnN0TmFtZSI6IkpvaG4ifSwiaWQiOjEyMzQ1fQ","type":"string"},"patients":{"description":"List of patients in this page","items":{"$ref":"#/components/schemas/PatientResponse"},"type":"array"}},"type":"object"}},"components/schemas/PatientMatchResponse":{"id":"components/schemas/PatientMatchResponse","kind":"json-schema","title":"PatientMatchResponse","data":{"description":"Response with matched patient ID","properties":{"patientId":{"description":"The matched patient ID","example":12345,"format":"int64","type":"integer"}},"type":"object"}},"components/schemas/PatientResponse":{"id":"components/schemas/PatientResponse","kind":"json-schema","title":"PatientResponse","data":{"description":"Patient record with basic demographic information","properties":{"active":{"description":"Whether the patient is active. false indicates an archived or merged-away record.","example":true,"type":"boolean"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"dateOfBirth":{"description":"Patient's date of birth in ISO 8601 format (YYYY-MM-DD)","example":"1990-01-15","format":"date","type":"string"},"email":{"description":"Patient's email address","example":"john.doe@example.com","format":"email","type":"string"},"firstName":{"description":"Patient's first name","example":"John","maxLength":255,"type":"string"},"gender":{"description":"Patient's gender","example":"male","type":"string"},"homeAddress":{"$ref":"#/components/schemas/PatientAddressDTO"},"id":{"description":"Unique patient identifier","example":12345,"format":"int64","type":"integer"},"lastName":{"description":"Patient's last name","example":"Doe","maxLength":255,"type":"string"},"mailingAddress":{"$ref":"#/components/schemas/PatientAddressDTO"},"mobilePhone":{"description":"Patient's mobile phone number (digits only, no formatting)","example":"14155551234","type":"string"},"primaryLocationId":{"description":"ID of the patient's primary location","example":1312,"format":"int64","type":"integer"},"primaryProviderId":{"description":"ID of the patient's primary provider (practitioner)","example":987,"format":"int64","type":"integer"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/PaymentAttemptDTO":{"id":"components/schemas/PaymentAttemptDTO","kind":"json-schema","title":"PaymentAttemptDTO","data":{"description":"Payment attempt","properties":{"amount":{"$ref":"#/components/schemas/Money"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"externalId":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"External payment-processor reference. For MX Merchant (the only supported V1 provider) this is the MXM transaction / QuickPay reference — the key to map this attempt back to the payment in MX Merchant."},"children":[]}]}]}],"example":"pi_abc123","type":"string"},"id":{"description":"Payment attempt ID","example":42,"format":"int64","type":"integer"},"invoiceId":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Invoice ID this attempt is associated with, if any. May be null for V1 recurring/subscription attempts that are not tied to a single invoice — in that case it is backfilled from the recurring payment's originating invoice when one exists, and subscriptionId provides the correlation key otherwise."},"children":[]}]}]}],"example":1001,"format":"int64","type":"integer"},"locationId":{"description":"Location ID for invoice lookups. Resolved from the associated invoice when present, otherwise from the recurring payment (subscription) the attempt belongs to. May be null only for legacy V1 attempts with neither association.","example":55,"format":"int64","type":"integer"},"patientId":{"description":"Patient ID. May be null for legacy attempts where a patient association is not resolvable.","example":3003,"format":"int64","type":"integer"},"paymentMethodId":{"description":"Payment method ID if present","example":7,"format":"int64","type":"integer"},"purchaseOrderId":{"description":"Purchase order ID from the invoice, if any","example":2002,"format":"int64","type":"integer"},"status":{"description":"Attempt status","enum":["PENDING","SUCCEEDED","FAILED","CANCELED"],"example":"PENDING","type":"string"},"subscriptionId":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Recurring payment (subscription) ID this attempt belongs to, if any. For V2 this is the invoice's subscription ID; for V1 this is the recurring payment ID. Populated when the attempt is part of a recurring schedule — the correlation key for attempts that have no directly associated invoice."},"children":[]}]}]}],"example":555,"format":"int64","type":"integer"}},"type":"object"}},"components/schemas/PaymentAttemptListResponse":{"id":"components/schemas/PaymentAttemptListResponse","kind":"json-schema","title":"PaymentAttemptListResponse","data":{"description":"Paginated list of payment attempts","properties":{"nextCursor":{"description":"Opaque cursor for the next page. Null if no more results.","type":"string"},"paymentAttempts":{"description":"Payment attempts in this page","items":{"$ref":"#/components/schemas/PaymentAttemptDTO"},"type":"array"}},"type":"object"}},"components/schemas/PaymentDTO":{"id":"components/schemas/PaymentDTO","kind":"json-schema","title":"PaymentDTO","data":{"description":"Payment","properties":{"amount":{"$ref":"#/components/schemas/Money"},"id":{"description":"Payment ID","example":1234,"format":"int64","type":"integer"},"invoiceId":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Invoice ID this payment is associated with, if any. May be null for V1 recurring/subscription payments not tied to a single invoice — in that case it is backfilled from the recurring payment's originating invoice when one exists, and subscriptionId provides the correlation key otherwise."},"children":[]}]}]}],"example":1234,"format":"int64","type":"integer"},"locationId":{"description":"Location ID for invoice lookups. Resolved from the associated invoice when present, otherwise from the recurring payment (subscription) this payment belongs to. May be null only for legacy V1 payments with neither association.","example":55,"format":"int64","type":"integer"},"patientId":{"description":"Patient ID. May be null for legacy payments where a patient association is not resolvable.","example":1234,"format":"int64","type":"integer"},"paymentAttemptId":{"description":"Payment attempt ID linked to this payment","example":1234,"format":"int64","type":"integer"},"postedOn":{"description":"Payment posted timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"purchaseOrderId":{"description":"Purchase order ID from the invoice, if any","example":1234,"format":"int64","type":"integer"},"subscriptionId":{"description":"Recurring payment (subscription) ID this payment belongs to, if any. For V2 this is the invoice's subscription ID; for V1 this is the recurring payment ID. Populated when the payment is part of a recurring schedule.","example":555,"format":"int64","type":"integer"},"surchargeAmount":{"$ref":"#/components/schemas/Money"},"surchargeRate":{"description":"Surcharge rate (decimal), if any","example":0.025,"type":"number"}},"type":"object"}},"components/schemas/PaymentListResponse":{"id":"components/schemas/PaymentListResponse","kind":"json-schema","title":"PaymentListResponse","data":{"description":"Paginated list of payments","properties":{"nextCursor":{"description":"Opaque cursor for the next page. Null if no more results.","type":"string"},"payments":{"description":"Payments in this page","items":{"$ref":"#/components/schemas/PaymentDTO"},"type":"array"}},"type":"object"}},"components/schemas/PractitionerOutputDTO":{"id":"components/schemas/PractitionerOutputDTO","kind":"json-schema","title":"PractitionerOutputDTO","data":{"description":"Practitioner available for self-scheduling","properties":{"displayName":{"description":"Full name of the practitioner (first and last name)","example":"Jane Smith","type":"string"},"firstAvailableSlot":{"description":"Earliest available slot start time in milliseconds since epoch. Null if no availability.","example":1704103200000,"format":"int64","type":"integer"},"practitionerId":{"description":"Staff ID of the practitioner. This corresponds to a staff member who is configured as a practitioner based on role groups.","example":42,"format":"int64","type":"integer"}},"type":"object"}},"components/schemas/PreparedScheduleOutputDTO":{"id":"components/schemas/PreparedScheduleOutputDTO","kind":"json-schema","title":"PreparedScheduleOutputDTO","data":{"description":"Availability response containing time slots grouped by date","properties":{"arePractitionersSelectable":{"description":"If true, the patient can choose their practitioner and each slot includes a practitionerToConfig map. If false, the system auto-assigns the best-ranked practitioner and each slot includes a single practitionerId.","example":true,"type":"boolean"},"practitioners":{"description":"List of practitioners who have availability in the queried time range","items":{"$ref":"#/components/schemas/PractitionerOutputDTO"},"type":"array"},"slotsByDate":{"additionalProperties":{"description":"Available time slots grouped by date. Keys are dates in M/d/yyyy format (e.g. \"1/15/2025\"). Values are arrays of available slots for that date, sorted by time then practitioner rank. Only dates with available slots are included.","items":{"$ref":"#/components/schemas/ScheduleSlotOutputDTO"},"type":"array"},"description":"Available time slots grouped by date. Keys are dates in M/d/yyyy format (e.g. \"1/15/2025\"). Values are arrays of available slots for that date, sorted by time then practitioner rank. Only dates with available slots are included.","type":"object"},"timeZone":{"description":"IANA timezone of the practice location (all slot times are in UTC epoch millis)","example":"America/New_York","type":"string"}},"type":"object"}},"components/schemas/ProblemDTO":{"id":"components/schemas/ProblemDTO","kind":"json-schema","title":"ProblemDTO","data":{"description":"Patient problem/diagnosis","properties":{"active":{"description":"Whether this record is active","example":true,"type":"boolean"},"comment":{"description":"Additional comments","example":"Diet controlled, A1c 6.2%","type":"string"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"createdBy":{"description":"Created by (staff name)","example":"Dr. Jane Smith","type":"string"},"diagnosisCode":{"description":"Diagnosis code (ICD-10)","example":"E11.9","type":"string"},"diagnosisText":{"description":"Diagnosis description","example":"Type 2 diabetes mellitus without complications","type":"string"},"id":{"description":"Unique problem identifier","example":12345,"format":"int64","type":"integer"},"patientId":{"description":"Patient ID","example":67890,"format":"int64","type":"integer"},"severity":{"description":"Severity level","enum":["SEVERE","MODERATE","MILD","UNKNOWN"],"example":"MODERATE","type":"string"},"status":{"description":"Problem status","enum":["ACTIVE","RESOLVED","UNKNOWN"],"example":"ACTIVE","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"updatedBy":{"description":"Last updated by (staff name)","example":"Dr. Jane Smith","type":"string"}},"type":"object"}},"components/schemas/ProblemListResponse":{"id":"components/schemas/ProblemListResponse","kind":"json-schema","title":"ProblemListResponse","data":{"description":"List of problems","properties":{"problems":{"description":"List of problems","items":{"$ref":"#/components/schemas/ProblemDTO"},"type":"array"}},"type":"object"}},"components/schemas/ReferenceRangeDTO":{"id":"components/schemas/ReferenceRangeDTO","kind":"json-schema","title":"ReferenceRangeDTO","data":{"description":"Numeric reference interval from lab test configuration.","example":[],"properties":{"id":{"description":"Reference range row identifier","example":101,"format":"int64","type":"integer"},"qualifiers":{"description":"Optional constraints for when this interval applies.","example":[],"items":{"$ref":"#/components/schemas/ReferenceRangeQualifierDTO"},"type":"array"},"rangeEnd":{"description":"Range end.","example":"100","type":"string"},"rangeStart":{"description":"Range start.","example":"70","type":"string"}},"type":"object"}},"components/schemas/ReferenceRangeQualifierDTO":{"id":"components/schemas/ReferenceRangeQualifierDTO","kind":"json-schema","title":"ReferenceRangeQualifierDTO","data":{"description":"Qualifier on a reference interval.","example":[],"properties":{"ageMaxYears":{"description":"Maximum age in years for this qualifier; null if unset.","example":65,"format":"int32","type":"integer"},"ageMinYears":{"description":"Minimum age in years for this qualifier; null if unset.","example":18,"format":"int32","type":"integer"},"machineId":{"description":"Lab machine id for this qualifier; null if unset.","example":42,"format":"int64","type":"integer"},"machineName":{"description":"Lab machine name for this qualifier; null if unset.","example":"Lab machine 1","type":"string"},"sex":{"description":"Sex for this qualifier; null if unset.","example":"MALE","type":"string"},"type":{"description":"Qualifier type.","enum":["AGE","SEX","MACHINE"],"example":"SEX","type":"string"}},"type":"object"}},"components/schemas/RefundDTO":{"id":"components/schemas/RefundDTO","kind":"json-schema","title":"RefundDTO","data":{"description":"Refund","properties":{"amount":{"$ref":"#/components/schemas/Money"},"id":{"description":"Refund ID","example":1234,"format":"int64","type":"integer"},"invoiceId":{"description":"Invoice ID","example":1234,"format":"int64","type":"integer"},"patientId":{"description":"Patient ID","example":1234,"format":"int64","type":"integer"},"paymentId":{"description":"Payment ID","example":1234,"format":"int64","type":"integer"},"postedOn":{"description":"When the refund was posted (UTC), if known","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"surchargeAmount":{"$ref":"#/components/schemas/Money"},"surchargeRate":{"description":"Surcharge rate (decimal), if any","example":0.025,"type":"number"}},"type":"object"}},"components/schemas/RefundListResponse":{"id":"components/schemas/RefundListResponse","kind":"json-schema","title":"RefundListResponse","data":{"description":"Paginated list of refunds","properties":{"nextCursor":{"description":"Opaque cursor for the next page. Null if no more results.","type":"string"},"refunds":{"description":"Refunds in this page","items":{"$ref":"#/components/schemas/RefundDTO"},"type":"array"}},"type":"object"}},"components/schemas/RoomDTO":{"id":"components/schemas/RoomDTO","kind":"json-schema","title":"RoomDTO","data":{"description":"Room details","properties":{"active":{"description":"Whether the room is active","example":true,"type":"boolean"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"id":{"description":"Unique room identifier","example":12345,"format":"int64","type":"integer"},"locationId":{"description":"Location ID","example":111,"format":"int64","type":"integer"},"name":{"description":"Room name","example":"Exam Room 1","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/RoomListResponse":{"id":"components/schemas/RoomListResponse","kind":"json-schema","title":"RoomListResponse","data":{"description":"Paginated list of rooms","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page","type":"string"},"rooms":{"description":"List of rooms","items":{"$ref":"#/components/schemas/RoomDTO"},"type":"array"}},"type":"object"}},"components/schemas/ScheduleSlotOutputDTO":{"id":"components/schemas/ScheduleSlotOutputDTO","kind":"json-schema","title":"ScheduleSlotOutputDTO","data":{"description":"An available time slot for booking. When arePractitionersSelectable is false, practitionerId and schedulerConfigId identify the single best-ranked practitioner for this slot. When arePractitionersSelectable is true, practitionerToConfig lists all available practitioners for the slot.","properties":{"endUnix":{"description":"Slot end time in milliseconds since epoch","example":1704105000000,"format":"int64","type":"integer"},"practitionerId":{"description":"Practitioner ID for this slot. Present when practitioners are NOT selectable (system auto-assigns the best-ranked practitioner).","example":42,"format":"int64","type":"integer"},"practitionerToConfig":{"additionalProperties":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Map of practitioner ID to scheduler config ID. Present when practitioners ARE selectable, listing every practitioner available for this time slot. Example: {\"42\": 7, \"55\": 12}"},"children":[]}]}]}],"format":"int64","type":"integer"},"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Map of practitioner ID to scheduler config ID. Present when practitioners ARE selectable, listing every practitioner available for this time slot. Example: {\"42\": 7, \"55\": 12}"},"children":[]}]}]}],"type":"object"},"schedulerConfigId":{"description":"Scheduler config ID for this slot. Present when practitioners are NOT selectable.","example":7,"format":"int64","type":"integer"},"startUnix":{"description":"Slot start time in milliseconds since epoch","example":1704103200000,"format":"int64","type":"integer"}},"type":"object"}},"components/schemas/SchedulerDTO":{"id":"components/schemas/SchedulerDTO","kind":"json-schema","title":"SchedulerDTO","data":{"description":"A scheduler (scheduler config / schedule)","properties":{"active":{"description":"Whether the scheduler is active","example":true,"type":"boolean"},"id":{"description":"Scheduler config ID (the integer in the settings URL)","example":1312,"format":"int64","type":"integer"},"locationId":{"description":"Location ID this scheduler belongs to","example":1312,"format":"int64","type":"integer"},"name":{"description":"Scheduler name","example":"Plano Lab Review / Med Reorder","type":"string"},"templates":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Weekly template (recurring availability), ordered Monday-first. Always returned by the single-scheduler GET; in list responses only when includeTemplates=true, and null otherwise. A scheduler with no template returns an empty array, so null means \"not requested\" rather than \"none configured\"."},"children":[]}]}]}],"items":{"$ref":"#/components/schemas/SchedulerTemplateDTO"},"type":"array"}},"type":"object"}},"components/schemas/SchedulerListResponse":{"id":"components/schemas/SchedulerListResponse","kind":"json-schema","title":"SchedulerListResponse","data":{"description":"Paginated list of schedulers","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"},"schedulers":{"description":"List of schedulers in this page","items":{"$ref":"#/components/schemas/SchedulerDTO"},"type":"array"}},"type":"object"}},"components/schemas/SchedulerTemplateDTO":{"id":"components/schemas/SchedulerTemplateDTO","kind":"json-schema","title":"SchedulerTemplateDTO","data":{"description":"A recurring weekly availability template for one day of the week","properties":{"appointmentTypeIds":{"description":"Appointment-type IDs available on this day","example":[12,34],"items":{"description":"Appointment-type IDs available on this day","format":"int64","type":"integer"},"type":"array"},"dayOfWeek":{"description":"Day of week (ISO-8601 name)","example":"MONDAY","type":"string"},"endTime":{"description":"Daily availability end time (24h, HH:mm)","example":"17:00","type":"string"},"practitionerIds":{"description":"Practitioner IDs bound to this day","example":[987,654],"items":{"description":"Practitioner IDs bound to this day","format":"int64","type":"integer"},"type":"array"},"quantity":{"description":"Available slots per time block","example":2,"format":"int32","type":"integer"},"startTime":{"description":"Daily availability start time (24h, HH:mm)","example":"09:00","type":"string"}},"type":"object"}},"components/schemas/SelfSchedulingAttemptResponse":{"id":"components/schemas/SelfSchedulingAttemptResponse","kind":"json-schema","title":"SelfSchedulingAttemptResponse","data":{"description":"Self-scheduling attempt response","properties":{"appointmentId":{"description":"Appointment ID if appointment has been created. Omitted if not yet created.","example":202,"format":"int64","type":"integer"},"id":{"description":"Attempt ID","example":789,"format":"int64","type":"integer"},"identityProofId":{"description":"Associated identity proof ID","example":456,"format":"int64","type":"integer"},"isVerified":{"description":"Whether all required verification methods have been completed","example":true,"type":"boolean"},"patientId":{"description":"Patient ID if patient has been set (AccountPatient ID). Omitted if not yet set.","example":101,"format":"int64","type":"integer"},"selfSchedulingSettingId":{"description":"Associated self-scheduling setting ID","example":123,"format":"int64","type":"integer"}},"type":"object"}},"components/schemas/SelfSchedulingCreateAppointmentRequest":{"id":"components/schemas/SelfSchedulingCreateAppointmentRequest","kind":"json-schema","title":"SelfSchedulingCreateAppointmentRequest","data":{"description":"Request to create an appointment for a self-scheduling attempt","properties":{"appointmentTypeId":{"description":"Appointment type ID","example":10,"format":"int64","type":"integer"},"locationId":{"description":"Location ID","example":1,"format":"int64","type":"integer"},"practitionerId":{"description":"Practitioner ID","example":7,"format":"int64","type":"integer"},"schedulerConfigId":{"description":"Scheduler config ID (must belong to the self-scheduling setting)","example":101,"format":"int64","type":"integer"},"startDateTime":{"description":"Appointment start time in ISO 8601 format with timezone","example":"2025-01-15T10:00:00-08:00","type":"string"}},"required":["appointmentTypeId","locationId","practitionerId","schedulerConfigId","startDateTime"],"type":"object"}},"components/schemas/SelfSchedulingCreateAppointmentResponse":{"id":"components/schemas/SelfSchedulingCreateAppointmentResponse","kind":"json-schema","title":"SelfSchedulingCreateAppointmentResponse","data":{"description":"Response after creating an appointment","properties":{"appointmentTypeId":{"description":"Appointment type ID","example":10,"format":"int64","type":"integer"},"endDateTime":{"description":"Appointment end time in ISO 8601 format with timezone","example":"2025-01-15T10:30:00-08:00","type":"string"},"formCount":{"description":"Number of forms to be completed by the patient","example":3,"format":"int32","type":"integer"},"id":{"description":"Appointment ID","example":999,"format":"int64","type":"integer"},"locationId":{"description":"Location ID","example":1,"format":"int64","type":"integer"},"practitionerId":{"description":"Practitioner ID","example":7,"format":"int64","type":"integer"},"startDateTime":{"description":"Appointment start time in ISO 8601 format with timezone","example":"2025-01-15T10:00:00-08:00","type":"string"},"status":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Appointment status (one of: SCHEDULED, CANCELLED, NO_SHOW, CHECKED_IN, IN_TREATMENT, CHECKED_OUT, CONFIRMED, RESCHEDULED, VOIDED)"},"children":[]}]}]}],"example":"SCHEDULED","type":"string"},"telehealth":{"description":"Whether this is a telehealth appointment","example":false,"type":"boolean"}},"type":"object"}},"components/schemas/SelfSchedulingSettingListResponse":{"id":"components/schemas/SelfSchedulingSettingListResponse","kind":"json-schema","title":"SelfSchedulingSettingListResponse","data":{"description":"Paginated list of self-scheduling settings","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","example":"null","type":"string"},"settings":{"description":"List of self-scheduling settings","items":{"$ref":"#/components/schemas/SelfSchedulingSettingResponse"},"type":"array"}},"type":"object"}},"components/schemas/SelfSchedulingSettingResponse":{"id":"components/schemas/SelfSchedulingSettingResponse","kind":"json-schema","title":"SelfSchedulingSettingResponse","data":{"description":"Self-scheduling setting configuration","properties":{"active":{"description":"Whether the scheduler is active","example":true,"type":"boolean"},"afterwardBookingLimit":{"description":"Afterward booking limit value (minimum time before appointment)","format":"int32","type":"integer"},"afterwardBookingLimitActive":{"description":"Whether afterward booking limit is active","example":false,"type":"boolean"},"afterwardBookingLimitUnit":{"description":"Unit for afterward booking limit","enum":["HOURS","DAYS","WEEKS","MONTHS"],"example":"null","type":"string"},"appointmentTypeIds":{"description":"List of associated appointment type IDs","items":{"description":"List of associated appointment type IDs","format":"int64","type":"integer"},"type":"array"},"appointmentTypeSelectable":{"description":"Whether patients can select the appointment type","example":true,"type":"boolean"},"appointmentTypeVisible":{"description":"Whether appointment type selection is visible to patients","example":true,"type":"boolean"},"fixedAppointmentTypeId":{"description":"Fixed appointment type ID if not selectable","format":"int64","type":"integer"},"fixedLocationId":{"description":"Fixed location ID if location is not selectable","format":"int64","type":"integer"},"forwardBookingLimit":{"description":"Forward booking limit value","example":30,"format":"int32","type":"integer"},"forwardBookingLimitActive":{"description":"Whether forward booking limit is active","example":true,"type":"boolean"},"forwardBookingLimitUnit":{"description":"Unit for forward booking limit","enum":["HOURS","DAYS","WEEKS","MONTHS"],"example":"DAYS","type":"string"},"id":{"description":"Self-scheduling setting ID","example":123,"format":"int64","type":"integer"},"locationIds":{"description":"List of associated location IDs","items":{"description":"List of associated location IDs","format":"int64","type":"integer"},"type":"array"},"locationSelectable":{"description":"Whether patients can select the location","example":true,"type":"boolean"},"locationVisible":{"description":"Whether location selection is visible to patients","example":true,"type":"boolean"},"name":{"description":"Display name for this scheduler","example":"New Patient Appointments","type":"string"},"practitionerIds":{"description":"List of associated practitioner IDs","items":{"description":"List of associated practitioner IDs","format":"int64","type":"integer"},"type":"array"},"practitionerSelectable":{"description":"Whether patients can select their practitioner","example":true,"type":"boolean"},"practitionerVisible":{"description":"Whether practitioner selection is visible to patients","example":true,"type":"boolean"},"publicUuid":{"description":"Public UUID for this setting","example":"550e8400-e29b-41d4-a716-446655440000","type":"string"},"schedulerConfigIds":{"description":"List of scheduler config IDs for booking appointments","items":{"description":"List of scheduler config IDs for booking appointments","format":"int64","type":"integer"},"type":"array"},"verificationMethod":{"description":"Method used to verify patient identity","enum":["EMAIL","SMS","EMAIL_AND_SMS"],"example":"EMAIL_AND_SMS","type":"string"},"welcomeMessageSubtitle":{"description":"Welcome message subtitle","example":"Please select a time for your appointment","type":"string"},"welcomeMessageTitle":{"description":"Welcome message title","example":"Welcome to Our Practice","type":"string"}},"type":"object"}},"components/schemas/SendVerificationRequest":{"id":"components/schemas/SendVerificationRequest","kind":"json-schema","title":"SendVerificationRequest","data":{"description":"Request to send verification code","properties":{"email":{"description":"Email to verify. Provide either email or phone, not both.","example":"john@example.com","type":"string"},"phone":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Phone number to verify (10-digit US number, e.g. 5551234567). Country code is optional and defaults to US (+1). Provide either email or phone, not both."},"children":[]}]}]}],"type":"string"}},"type":"object"}},"components/schemas/SendVerificationResponse":{"id":"components/schemas/SendVerificationResponse","kind":"json-schema","title":"SendVerificationResponse","data":{"description":"Response from send verification request","properties":{"sent":{"description":"Whether the verification code was sent successfully","example":true,"type":"boolean"}},"type":"object"}},"components/schemas/StaffDTO":{"id":"components/schemas/StaffDTO","kind":"json-schema","title":"StaffDTO","data":{"description":"Staff member details","properties":{"canSelfSchedule":{"description":"Whether practitioner can be self-scheduled for appointments","example":true,"type":"boolean"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"email":{"description":"Email address","example":"jane.smith@clinic.com","type":"string"},"firstName":{"description":"First name","example":"Jane","type":"string"},"id":{"description":"Unique staff member identifier","example":12345,"format":"int64","type":"integer"},"isPractitioner":{"description":"Whether this staff member is a clinical practitioner","example":true,"type":"boolean"},"lastLoginAt":{"description":"Last login timestamp","example":"2025-01-15T09:00:00Z","format":"date-time","type":"string"},"lastName":{"description":"Last name","example":"Smith","type":"string"},"locationIds":{"description":"Location IDs the staff member has access to","items":{"description":"Location IDs the staff member has access to","format":"int64","type":"integer"},"type":"array"},"npiNumber":{"description":"NPI (National Provider Identifier)","example":"1234567890","type":"string"},"phone":{"description":"Phone number","example":"+15551234567","type":"string"},"profileImageUrl":{"description":"Profile image URL","type":"string"},"status":{"description":"Account status","enum":["ACTIVE","INACTIVE","PENDING"],"example":"ACTIVE","type":"string"},"title":{"description":"Job title","example":"Office Manager","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/StaffListResponse":{"id":"components/schemas/StaffListResponse","kind":"json-schema","title":"StaffListResponse","data":{"description":"Paginated list of staff members","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"},"staff":{"description":"List of staff members in this page","items":{"$ref":"#/components/schemas/StaffDTO"},"type":"array"}},"type":"object"}},"components/schemas/SubscriptionDTO":{"id":"components/schemas/SubscriptionDTO","kind":"json-schema","title":"SubscriptionDTO","data":{"description":"Subscription","properties":{"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"endDate":{"description":"Subscription end date (UTC midnight of stored date)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"externalId":{"description":"External identifier from the processor or integrator","example":"ext_sub_001","type":"string"},"id":{"description":"Subscription ID","example":1234,"format":"int64","type":"integer"},"lineItems":{"description":"Line items on the subscription","items":{"$ref":"#/components/schemas/SubscriptionLineItemDTO"},"type":"array"},"locationId":{"description":"Location ID","example":200,"format":"int64","type":"integer"},"nextBillingDate":{"description":"Next billing date (UTC midnight of stored date)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"note":{"description":"Internal note","example":"Patient approved monthly plan","type":"string"},"occurrences":{"description":"Total billing occurrences when limited","example":12,"format":"int32","type":"integer"},"orderId":{"description":"Purchase order ID when tied through an order subscription","example":700,"format":"int64","type":"integer"},"patientId":{"description":"Patient ID (account patient)","example":300,"format":"int64","type":"integer"},"paymentCustomerId":{"description":"Payment customer ID. May be null for legacy subscriptions without a resolved payment customer.","example":400,"format":"int64","type":"integer"},"paymentMethodId":{"description":"Payment method ID when set","example":500,"format":"int64","type":"integer"},"recurrenceFrequencyUnit":{"description":"Recurrence interval unit","example":"MONTHLY","type":"string"},"recurrenceFrequencyValue":{"description":"Recurrence interval count","example":1,"format":"int32","type":"integer"},"startDate":{"description":"Subscription start date (UTC midnight of stored date)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"status":{"description":"Subscription status","enum":["DRAFT","ACTIVE","PENDING","PAUSED","CANCELLED","COMPLETED","FAILED","VOID"],"example":"ACTIVE","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/SubscriptionLineItemDTO":{"id":"components/schemas/SubscriptionLineItemDTO","kind":"json-schema","title":"SubscriptionLineItemDTO","data":{"description":"Subscription line item","properties":{"billingCode":{"description":"Billing code","example":"99213","type":"string"},"discountPercent":{"description":"Discount percent","example":12.5,"type":"number"},"id":{"description":"Line item ID","example":9001,"format":"int64","type":"integer"},"itemId":{"description":"Catalog item ID","example":42,"format":"int64","type":"integer"},"itemType":{"description":"Catalog item type","example":"SERVICE","type":"string"},"name":{"description":"Display name","example":"Office visit","type":"string"},"price":{"$ref":"#/components/schemas/Money"},"quantity":{"description":"Quantity","example":1,"format":"int32","type":"integer"}},"type":"object"}},"components/schemas/SubscriptionListResponse":{"id":"components/schemas/SubscriptionListResponse","kind":"json-schema","title":"SubscriptionListResponse","data":{"description":"Paginated list of subscriptions","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page","type":"string"},"subscriptions":{"description":"List of subscriptions","items":{"$ref":"#/components/schemas/SubscriptionDTO"},"type":"array"}},"type":"object"}},"components/schemas/TagDTO":{"id":"components/schemas/TagDTO","kind":"json-schema","title":"TagDTO","data":{"description":"Patient tag (a colored label on a patient)","properties":{"active":{"description":"Whether the tag is active. false indicates a removed tag.","example":true,"type":"boolean"},"color":{"description":"Tag color (hex code from the Lobbie palette)","example":"#C1E4FF","type":"string"},"createdAt":{"description":"When the tag was created","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"id":{"description":"Unique tag identifier","example":55,"format":"int64","type":"integer"},"note":{"description":"Tag text","example":"VIP","type":"string"},"patientId":{"description":"Patient ID this tag belongs to","example":12345,"format":"int64","type":"integer"},"sortOrder":{"description":"Display order (ascending)","example":10000,"format":"int64","type":"integer"},"updatedAt":{"description":"When the tag was last updated","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/TagListResponse":{"id":"components/schemas/TagListResponse","kind":"json-schema","title":"TagListResponse","data":{"description":"Paginated list of patient tags","properties":{"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"},"tags":{"description":"List of patient tags","items":{"$ref":"#/components/schemas/TagDTO"},"type":"array"}},"type":"object"}},"components/schemas/TaskDTO":{"id":"components/schemas/TaskDTO","kind":"json-schema","title":"TaskDTO","data":{"description":"Task","properties":{"action":{"description":"Task action","example":"VIEW_LABS","type":"string"},"assigneeStaffIds":{"description":"Staff IDs the task is assigned to","example":[987,654],"items":{"description":"Staff IDs the task is assigned to","format":"int64","type":"integer"},"type":"array"},"comment":{"description":"Free-text comment","example":"Follow up on elevated values","type":"string"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"createdByStaffId":{"description":"Staff ID who created the task; null for system-generated tasks","example":987,"format":"int64","type":"integer"},"dueDate":{"description":"Due date (YYYY-MM-DD, location timezone)","example":"2025-01-15","type":"string"},"id":{"description":"Task ID","example":42,"format":"int64","type":"integer"},"locationId":{"description":"Location ID","example":1312,"format":"int64","type":"integer"},"overdue":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Whether the task is past due (open + dueDate before today in the location's timezone)"},"children":[]}]}]}],"example":false,"type":"boolean"},"relatedTo":{"description":"Entities this task relates to","items":{"$ref":"#/components/schemas/TaskRelationDTO"},"type":"array"},"status":{"description":"Status","enum":["OPEN","COMPLETED","DELETED"],"example":"OPEN","type":"string"},"system":{"description":"Whether the task was system-generated (vs manually created)","example":false,"type":"boolean"},"title":{"description":"Title","example":"Review lab results","type":"string"},"type":{"description":"Task type","example":"LABS","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"}},"type":"object"}},"components/schemas/TaskListResponse":{"id":"components/schemas/TaskListResponse","kind":"json-schema","title":"TaskListResponse","data":{"description":"Paginated list of tasks","properties":{"nextCursor":{"description":"Opaque cursor for the next page. Null if no more results.","type":"string"},"tasks":{"description":"Tasks in this page","items":{"$ref":"#/components/schemas/TaskDTO"},"type":"array"}},"type":"object"}},"components/schemas/TaskRelationDTO":{"id":"components/schemas/TaskRelationDTO","kind":"json-schema","title":"TaskRelationDTO","data":{"description":"A reference to an entity a task relates to","properties":{"id":{"description":"Related entity ID","example":3003,"format":"int64","type":"integer"},"type":{"description":"Related entity type","enum":["LAB","PATIENT","APPOINTMENT","PAYMENT_REQUEST","INVOICE","CSL_SIGNATURE_REQUEST","REMOTE_CARE_CONVERSION"],"example":"PATIENT","type":"string"}},"type":"object"}},"components/schemas/TestComponentDTO":{"id":"components/schemas/TestComponentDTO","kind":"json-schema","title":"TestComponentDTO","data":{"description":"Lab test component (individual result)","properties":{"abnormalFlag":{"description":"Abnormal flag","enum":["BELOW_NORMAL","WITHIN_NORMAL","ABOVE_NORMAL"],"example":"WITHIN_NORMAL","type":"string"},"comments":{"description":"Comments on this result row.","example":"Clinical note","type":"string"},"externalId":{"description":"External ID from vendor","example":"GLU","type":"string"},"id":{"description":"Unique component identifier","example":98765,"format":"int64","type":"integer"},"labId":{"description":"Parent lab ID.","example":12345,"format":"int64","type":"integer"},"name":{"description":"Test name","example":"Glucose","type":"string"},"packetId":{"description":"Parent packet ID when the component is under a packet; otherwise null.","example":10,"format":"int64","type":"integer"},"packetName":{"description":"Packet name when packetId is set; otherwise null.","example":"Metabolic bundle","type":"string"},"panelId":{"description":"Parent panel ID. Null when the component is not under a panel.","example":54321,"format":"int64","type":"integer"},"panelName":{"description":"Panel name. Null when the component is not under a panel.","example":"Comprehensive Metabolic Panel","type":"string"},"referenceRanges":{"description":"All configured numeric reference intervals for this test (from lab component config), with optional qualifiers. Empty when no ranges are configured.","example":[],"items":{"$ref":"#/components/schemas/ReferenceRangeDTO"},"type":"array"},"unit":{"description":"Unit of measurement","example":"mg/dL","type":"string"},"value":{"description":"Result value","example":"95","type":"string"}},"type":"object"}},"components/schemas/TestComponentListResponse":{"id":"components/schemas/TestComponentListResponse","kind":"json-schema","title":"TestComponentListResponse","data":{"description":"Paginated list of test components","properties":{"components":{"description":"List of test components","items":{"$ref":"#/components/schemas/TestComponentDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"}},"type":"object"}},"components/schemas/TestWebhookRequest":{"id":"components/schemas/TestWebhookRequest","kind":"json-schema","title":"TestWebhookRequest","data":{"description":"Request to send a test webhook event.","properties":{"accountId":{"description":"Account the test event is attributed to. The authenticated partner must have an active grant to this account. The value is published verbatim as the delivery envelope's accountId, exactly as it would be on a real event.","example":12345,"format":"int64","type":"integer"}},"required":["accountId"],"type":"object"}},"components/schemas/TestWebhookResponse":{"id":"components/schemas/TestWebhookResponse","kind":"json-schema","title":"TestWebhookResponse","data":{"description":"Response from webhook test","properties":{"message":{"description":"Human-readable summary of the delivery outcome.","example":"Delivered successfully (HTTP 200)","type":"string"},"responseStatusCode":{"description":"HTTP status code returned by the endpoint. Null if the request never completed.","example":200,"format":"int32","type":"integer"},"responseTimeMs":{"description":"Response time in milliseconds","example":150,"format":"int32","type":"integer"},"success":{"description":"Whether the test was successful","example":true,"type":"boolean"},"testEventId":{"description":"Test event ID","example":"evt_test_abc123","type":"string"}},"type":"object"}},"components/schemas/UpdateAppointmentRequest":{"id":"components/schemas/UpdateAppointmentRequest","kind":"json-schema","title":"UpdateAppointmentRequest","data":{"description":"Request to update an existing appointment","properties":{"note":{"description":"Updated appointment notes","example":"Follow-up for lab results","type":"string"},"practitionerId":{"description":"New practitioner ID for reassignment (staff member with a practitioner role)","example":223,"format":"int64","type":"integer"},"roomId":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Room ID (required when setting status to IN_TREATMENT; must be an active room at the location). When the appointment is already IN_TREATMENT, can be sent alone to change the room."},"children":[]}]}]}],"example":1,"format":"int64","type":"integer"},"startTime":{"description":"New appointment start time (ISO 8601) for rescheduling","example":"2025-01-16T10:00:00-05:00","type":"string"},"status":{"description":"New status","enum":["SCHEDULED","CONFIRMED","CHECKED_IN","IN_TREATMENT","CHECKED_OUT","CANCELLED","NO_SHOW"],"example":"CONFIRMED","pattern":"(?i)SCHEDULED|CONFIRMED|CHECKED_IN|IN_TREATMENT|CHECKED_OUT|CANCELLED|NO_SHOW","type":"string"}},"type":"object"}},"components/schemas/UpdateFormAnswersRequest":{"id":"components/schemas/UpdateFormAnswersRequest","kind":"json-schema","title":"UpdateFormAnswersRequest","data":{"description":"Request to update form answers","properties":{"answers":{"description":"List of answer updates","items":{"$ref":"#/components/schemas/AnswerUpdate"},"type":"array"}},"required":["answers"],"type":"object"}},"components/schemas/UpdateFormPacketRequest":{"id":"components/schemas/UpdateFormPacketRequest","kind":"json-schema","title":"UpdateFormPacketRequest","data":{"description":"Request to update a form packet","properties":{"addFormTemplateIds":{"description":"Additional form template IDs to add","example":[104],"items":{"description":"Additional form template IDs to add","format":"int64","type":"integer"},"type":"array"},"dueDate":{"description":"New due date (ISO 8601)","example":"2025-01-25T17:00:00-05:00","type":"string"},"isArchived":{"description":"Whether to archive or un-archive the form packet","example":true,"type":"boolean"},"prefill":{"additionalProperties":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pre-fill form fields with known data. Keys are form element attribute names (case-insensitive, trimmed) and values are the answer strings. Applied across all forms in the packet — each field whose attribute name matches a key will be pre-filled. Use GET /form/template/{id}/attribute to discover available attribute names."},"children":[]}]}]}],"example":"{\"first_name\":\"John\",\"email\":\"john@example.com\"}","type":"string"},"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pre-fill form fields with known data. Keys are form element attribute names (case-insensitive, trimmed) and values are the answer strings. Applied across all forms in the packet — each field whose attribute name matches a key will be pre-filled. Use GET /form/template/{id}/attribute to discover available attribute names."},"children":[]}]}]}],"example":{"email":"john@example.com","first_name":"John"},"type":"object"}},"type":"object"}},"components/schemas/UpdatePatientRequest":{"id":"components/schemas/UpdatePatientRequest","kind":"json-schema","title":"UpdatePatientRequest","data":{"description":"Request to update patient information. All fields are optional - only provided fields will be updated.","properties":{"dateOfBirth":{"description":"Patient's date of birth in ISO 8601 format (YYYY-MM-DD). Send null to clear (not allowed if account requires DOB).","example":"1990-01-15","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"email":{"description":"Patient's email address. Send null to clear and generate an anonymous email.","example":"john.doe@example.com","format":"email","maxLength":255,"minLength":0,"type":"string"},"firstName":{"description":"Patient's first name","example":"John","maxLength":80,"minLength":0,"type":"string"},"gender":{"description":"Patient's gender. Reference https://www.hl7.org/fhir/R4/codesystem-gender-identity.html for possible values.","example":"Male","type":"string"},"lastName":{"description":"Patient's last name","example":"Doe","maxLength":80,"minLength":0,"type":"string"},"mobilePhone":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Patient's mobile phone number. 10-digit US number, optionally prefixed with '+1' or '1'. Send null to clear."},"children":[]}]}]}],"example":"4155551234","maxLength":12,"minLength":0,"pattern":"^\\+?1?\\d{10}$","type":"string"}},"type":"object"}},"components/schemas/UpdateWebhookEndpointRequest":{"id":"components/schemas/UpdateWebhookEndpointRequest","kind":"json-schema","title":"UpdateWebhookEndpointRequest","data":{"description":"Request to update a webhook endpoint. Fields left null are unchanged.","properties":{"active":{"description":"Activate or deactivate the endpoint","type":"boolean"},"eventTypes":{"description":"Updated event types to subscribe to. Must be non-empty if provided.","items":{"description":"Updated event types to subscribe to. Must be non-empty if provided.","type":"string"},"type":"array"},"name":{"description":"Name for the endpoint","example":"Production Webhook","type":"string"},"url":{"description":"New webhook URL. Must be HTTPS and include a host.","example":"https://api.example.com/webhooks/lobbie","type":"string"}},"type":"object"}},"components/schemas/VerifyCodeRequest":{"id":"components/schemas/VerifyCodeRequest","kind":"json-schema","title":"VerifyCodeRequest","data":{"description":"Request to verify code","properties":{"code":{"description":"Verification code received","example":"123456","type":"string"},"email":{"description":"Email that received the code. Provide either email or phone, not both.","example":"john@example.com","type":"string"},"phone":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Phone number that received the code (10-digit US number, e.g. 5551234567). Country code is optional and defaults to US (+1). Provide either email or phone, not both."},"children":[]}]}]}],"type":"string"}},"required":["code"],"type":"object"}},"components/schemas/VerifyCodeResponse":{"id":"components/schemas/VerifyCodeResponse","kind":"json-schema","title":"VerifyCodeResponse","data":{"description":"Response from verify code request","properties":{"verified":{"description":"Whether the code was verified successfully","example":true,"type":"boolean"},"verifiedEmail":{"description":"Verified email (if verification succeeded)","example":"john@example.com","type":"string"},"verifiedPhone":{"description":"Verified phone (if verification succeeded)","example":"5551234567","type":"string"}},"type":"object"}},"components/schemas/WebhookEndpointDTO":{"id":"components/schemas/WebhookEndpointDTO","kind":"json-schema","title":"WebhookEndpointDTO","data":{"description":"Webhook endpoint configuration","properties":{"active":{"description":"Whether this endpoint is active","example":true,"type":"boolean"},"createdAt":{"description":"Creation timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"eventTypes":{"description":"Event types this endpoint is subscribed to","example":["appointment.created","appointment.updated","form.completed"],"items":{"description":"Event types this endpoint is subscribed to","example":"[\"appointment.created\",\"appointment.updated\",\"form.completed\"]","type":"string"},"type":"array"},"id":{"description":"Unique webhook endpoint identifier","example":12345,"format":"int64","type":"integer"},"lastFailureAt":{"description":"UTC timestamp of the last failed outbound delivery for this endpoint. Null until the delivery worker records a failure.","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"lastSuccessAt":{"description":"UTC timestamp of the last successful outbound delivery for this endpoint. Null until the delivery worker records a success.","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"name":{"description":"Name for the endpoint","example":"Production Webhook","type":"string"},"signingSecret":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Signing secret — only returned on the create response, never on reads. Store it securely the moment it is returned; it cannot be retrieved later."},"children":[]}]}]}],"example":"abc123XYZ...","type":"string"},"updatedAt":{"description":"Last update timestamp (UTC)","example":"2025-01-15T14:00:00Z","format":"date-time","type":"string"},"url":{"description":"Webhook URL where events are delivered","example":"https://api.example.com/webhooks/lobbie","type":"string"}},"type":"object"}},"components/schemas/WebhookEndpointListResponse":{"id":"components/schemas/WebhookEndpointListResponse","kind":"json-schema","title":"WebhookEndpointListResponse","data":{"description":"Paginated list of webhook endpoints","properties":{"items":{"description":"List of webhook endpoints on the current page","items":{"$ref":"#/components/schemas/WebhookEndpointDTO"},"type":"array"},"nextCursor":{"description":"Opaque cursor for fetching the next page. Null if no more results.","type":"string"}},"type":"object"}},"components/schemas/WebhookEnvelope":{"id":"components/schemas/WebhookEnvelope","kind":"json-schema","title":"WebhookEnvelope","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Envelope wrapping every outbound webhook delivery. The POST body Lobbie sends to a configured endpoint is an instance of this schema; the event-specific payload is carried in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"properties":{"accountId":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifier of the Lobbie account the event source belongs to. Stable for the lifetime of the event and present on every delivery — use it to route or attribute incoming events without joining on fields inside "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":12345,"format":"int64","type":"integer"},"data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Event payload, always a JSON object. For domain events its shape matches the corresponding REST 200 response body (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"appointment.created"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" carries an Appointment); for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"test.ping"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" it is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ endpointId, message }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; for delete events it carries identity only (entity type and id)."},"children":[]}]}]}],"type":"object"},"deliveryAttempt":{"description":"Delivery attempt number, 1-indexed. Increments on each retry of the same event.","example":1,"format":"int32","type":"integer"},"environment":{"description":"Identifier of the Lobbie deployment the event originated from.","example":"prod","type":"string"},"eventId":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unique event id; identical to the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Lobbie-Webhook-Event-Id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header. Stable across retries of the same event — use it to deduplicate."},"children":[]}]}]}],"example":"evt_550e8400-e29b-41d4-a716-446655440000","type":"string"},"eventType":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Event type; identical to the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Lobbie-Webhook-Event-Type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header."},"children":[]}]}]}],"example":"appointment.created","type":"string"},"occurredAt":{"description":"When the event occurred, as an ISO-8601 instant. Stable across retries.","example":"2025-03-15T14:30:00Z","type":"string"},"sentAt":{"description":"When this delivery attempt was sent, as an ISO-8601 instant. Changes on each retry.","example":"2025-03-15T14:30:01Z","type":"string"},"version":{"description":"Payload format version. Bumped only on a breaking change to the envelope.","example":"1","type":"string"}},"required":["accountId","data","deliveryAttempt","environment","eventId","eventType","occurredAt","sentAt","version"],"type":"object"}},"schema_51":{"kind":"json-schema","data":{"default":"ID","enum":["ID"],"pattern":"(?i)ID","type":"string"},"id":"schema_51"},"schema_52":{"kind":"json-schema","data":{"default":"ASC","enum":["ASC","DESC"],"pattern":"(?i)(?:ASC|DESC)","type":"string"},"id":"schema_52"},"schema_53":{"kind":"json-schema","data":{"maxLength":2048,"minLength":0,"type":"string"},"id":"schema_53"},"schema_54":{"kind":"json-schema","data":{"default":20,"format":"int32","maximum":1000,"minimum":1,"type":"integer"},"id":"schema_54"},"schema_55":{"kind":"json-schema","data":{"format":"int64","type":"integer"},"id":"schema_55"},"schema_56":{"kind":"json-schema","data":{"maxLength":100,"minLength":0,"type":"string"},"id":"schema_56"},"schema_57":{"kind":"json-schema","data":{"maxLength":500,"minLength":0,"type":"string"},"id":"schema_57"},"schema_58":{"kind":"json-schema","data":{"default":"NAME","enum":["NAME","CREATED_DATE","DURATION"],"pattern":"(?i)NAME|CREATED_DATE|DURATION","type":"string"},"id":"schema_58"},"schema_59":{"kind":"json-schema","data":{"default":"ASC","enum":["ASC","DESC"],"pattern":"(?i)ASC|DESC","type":"string"},"id":"schema_59"},"schema_60":{"kind":"json-schema","data":{"enum":[true,false],"type":"boolean"},"id":"schema_60"},"schema_61":{"kind":"json-schema","data":{"type":"string"},"id":"schema_61"},"schema_62":{"kind":"json-schema","data":{"default":"START_TIME","enum":["START_TIME","CREATED_DATE"],"pattern":"(?i)START_TIME|CREATED_DATE","type":"string"},"id":"schema_62"},"schema_63":{"kind":"json-schema","data":{"type":"boolean"},"id":"schema_63"},"schema_64":{"kind":"json-schema","data":{"default":"NAME","enum":["NAME","CREATED_DATE"],"pattern":"(?i)NAME|CREATED_DATE","type":"string"},"id":"schema_64"},"schema_65":{"kind":"json-schema","data":{"default":"SORT_ORDER","enum":["SORT_ORDER","CREATED_DATE"],"pattern":"(?i)SORT_ORDER|CREATED_DATE","type":"string"},"id":"schema_65"},"schema_66":{"kind":"json-schema","data":{"default":true,"type":"boolean"},"id":"schema_66"},"schema_67":{"kind":"json-schema","data":{"default":"CREATED_DATE","enum":["DUE_DATE","CREATED_DATE","ID"],"type":"string"},"id":"schema_67"},"schema_68":{"kind":"json-schema","data":{"default":"DESC","enum":["ASC","DESC"],"type":"string"},"id":"schema_68"},"schema_69":{"kind":"json-schema","data":{"items":{"$ref":"#/components/schemas/FormDTO"},"type":"array"},"id":"schema_69"},"schema_70":{"kind":"json-schema","data":{"enum":["DRAFT","OPEN","PAID","VOID","UNCOLLECTIBLE"],"pattern":"(?i)DRAFT|OPEN|PAID|VOID|UNCOLLECTIBLE","type":"string"},"id":"schema_70"},"schema_71":{"kind":"json-schema","data":{"default":"CREATED_DATE","enum":["CREATED_DATE","TOTAL_AMOUNT","DUE_DATE"],"pattern":"(?i)CREATED_DATE|TOTAL_AMOUNT|DUE_DATE","type":"string"},"id":"schema_71"},"schema_72":{"kind":"json-schema","data":{"default":"DESC","enum":["ASC","DESC"],"pattern":"(?i)ASC|DESC","type":"string"},"id":"schema_72"},"schema_73":{"kind":"json-schema","data":{"enum":["SERVICE","SUPPLY"],"pattern":"(?i)SERVICE|SUPPLY","type":"string"},"id":"schema_73"},"schema_74":{"kind":"json-schema","data":{"enum":["PROCESSING","COMPLETE","ORDER_ERROR"],"pattern":"(?i)PROCESSING|COMPLETE|ORDER_ERROR","type":"string"},"id":"schema_74"},"schema_75":{"kind":"json-schema","data":{"enum":["IN_HOUSE","ACCESS_MEDICAL","LABCORP","PRIME","BRIO","SPOTDX","OTHER"],"pattern":"(?i)IN_HOUSE|ACCESS_MEDICAL|LABCORP|PRIME|BRIO|SPOTDX|OTHER","type":"string"},"id":"schema_75"},"schema_76":{"kind":"json-schema","data":{"default":"ENTRY_DATE","enum":["ENTRY_DATE","CREATED_DATE"],"pattern":"(?i)ENTRY_DATE|CREATED_DATE","type":"string"},"id":"schema_76"},"schema_77":{"kind":"json-schema","data":{"enum":["BELOW_NORMAL","WITHIN_NORMAL","ABOVE_NORMAL"],"pattern":"(?i)BELOW_NORMAL|WITHIN_NORMAL|ABOVE_NORMAL","type":"string"},"id":"schema_77"},"schema_78":{"kind":"json-schema","data":{"enum":["GHL","MX_MERCHANT"],"type":"string"},"id":"schema_78"},"schema_79":{"kind":"json-schema","data":{"enum":["CONTACT_ID","OPPORTUNITY_ID","LOCATION_ID","CUSTOMER_ID","MERCHANT_ID"],"type":"string"},"id":"schema_79"},"schema_80":{"kind":"json-schema","data":{"maxLength":255,"minLength":0,"type":"string"},"id":"schema_80"},"schema_81":{"kind":"json-schema","data":{"default":20,"format":"int32","type":"integer"},"id":"schema_81"},"schema_82":{"kind":"json-schema","data":{"enum":["STAFF_WELCOME","PATIENT_WELCOME","APPOINTMENT_CONFIRMATION","APPOINTMENT_CHECKIN","APPOINTMENT_RESCHEDULE","APPOINTMENT_SCHEDULE_DATE","APPOINTMENT_SCHEDULE_TIME","APPOINTMENT_ROOM_READY","PASSWORD_RESET","APPOINTMENT_SCHEDULED","APPOINTMENT_WAIT_APOLOGY","SMS_CONFIRM_CODE","EMAIL_CONFIRM_CODE","APPOINTMENT_FORM_ADDED","APPOINTMENT_OAM_OFFER","APPOINTMENT_TELEHEALTH_LINK","FORMS_ASSIGNMENT","FORMS_NOTIFY_STAFF_ON_COMPLETE","FORMS_ADDED_NO_APPOINTMENT","SUPPORT_EMAIL","APPOINTMENT_NOTIFY_STAFF_APPOINTMENT_SCHEDULED_VIA_SELF_SCHEDULING","APPOINTMENT_CANCELED","NPS_SURVEY","DO_NOT_SEND","GENERAL_INCOMING_MESSAGE_RESPONSE","NPS_INVITATION","NPS_SURVEY_NOTIFY_STAFF_ON_COMPLETE","NOTIFY_STAFF_APPOINTMENT_CANCELED_BY_PATIENT","PAYMENT_REQUEST_SENT_TO_PATIENT","PAYMENT_REQUEST_REMINDER_TO_PATIENT","PATIENT_PORTAL_INVITE","PORTAL_RECORD_CONNECTED"],"type":"string"},"id":"schema_82"},"schema_83":{"kind":"json-schema","data":{"enum":["UNPROCESSED","PROCESSED_SENT","PROCESSED_UNSENT"],"type":"string"},"id":"schema_83"},"schema_84":{"kind":"json-schema","data":{"enum":["DRAFT","PENDING","CANCELED","SUBMITTED","VOID"],"pattern":"(?i)DRAFT|PENDING|CANCELED|SUBMITTED|VOID","type":"string"},"id":"schema_84"},"schema_85":{"kind":"json-schema","data":{"maxLength":254,"minLength":0,"type":"string"},"id":"schema_85"},"schema_86":{"kind":"json-schema","data":{"default":"CREATED_DATE","enum":["NAME","CREATED_DATE"],"pattern":"(?i)NAME|CREATED_DATE","type":"string"},"id":"schema_86"},"schema_87":{"kind":"json-schema","data":{"enum":["CONTACT_ID","OPPORTUNITY_ID","CUSTOMER_ID"],"type":"string"},"id":"schema_87"},"schema_88":{"kind":"json-schema","data":{"pattern":"(?i)ACTIVE|RESOLVED|UNKNOWN","type":"string"},"id":"schema_88"},"schema_89":{"kind":"json-schema","data":{"pattern":"(?i)ACTIVE|ON_HOLD|DISCONTINUED|COMPLETED|UNKNOWN","type":"string"},"id":"schema_89"},"schema_90":{"kind":"json-schema","data":{"enum":["PENDING","SUCCEEDED","FAILED","CANCELED"],"example":"PENDING","type":"string"},"id":"schema_90"},"schema_91":{"kind":"json-schema","data":{"default":"CREATED_DATE","enum":["CREATED_DATE","AMOUNT"],"pattern":"(?i)(CREATED_DATE|AMOUNT)","type":"string"},"id":"schema_91"},"schema_92":{"kind":"json-schema","data":{"default":"DESC","enum":["ASC","DESC"],"pattern":"(?i)(ASC|DESC)","type":"string"},"id":"schema_92"},"schema_93":{"kind":"json-schema","data":{"default":"POSTED_ON","enum":["POSTED_ON","AMOUNT"],"pattern":"(?i)POSTED_ON|AMOUNT","type":"string"},"id":"schema_93"},"schema_94":{"kind":"json-schema","data":{"default":false,"type":"boolean"},"id":"schema_94"},"schema_95":{"kind":"json-schema","data":{"pattern":"(?i)ACTIVE|INACTIVE|PENDING","type":"string"},"id":"schema_95"},"schema_96":{"kind":"json-schema","data":{"enum":["DRAFT","ACTIVE","PENDING","PAUSED","CANCELLED","COMPLETED","FAILED","VOID"],"pattern":"(?i)DRAFT|ACTIVE|PENDING|PAUSED|CANCELLED|COMPLETED|FAILED|VOID","type":"string"},"id":"schema_96"},"schema_97":{"kind":"json-schema","data":{"default":"CREATED_DATE","enum":["CREATED_DATE","START_DATE","NEXT_BILLING_DATE"],"pattern":"(?i)CREATED_DATE|START_DATE|NEXT_BILLING_DATE","type":"string"},"id":"schema_97"},"schema_98":{"kind":"json-schema","data":{"enum":["OPEN","COMPLETED","DELETED"],"type":"string"},"id":"schema_98"},"schema_99":{"kind":"json-schema","data":{"enum":["OTHER","LABS","BILLING","PRESCRIPTION","INTAKE","SCHEDULING","CSL","CLINICAL_CHART","REMOTE_CARE","FOLLOW_UP"],"type":"string"},"id":"schema_99"},"schema_100":{"kind":"json-schema","data":{"enum":["CONVERTED","LANDED"],"pattern":"(?i)CONVERTED|LANDED","type":"string"},"id":"schema_100"},"schema_101":{"kind":"json-schema","data":{"default":"CREATED_DATE","enum":["CREATED_DATE","URL","NAME"],"pattern":"(?i)CREATED_DATE|URL|NAME","type":"string"},"id":"schema_101"}},"exampleStore":{"paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/Email verification":{"value":{"email":"john@example.com"},"key":"Email verification","summary":"Email verification","description":"Email verification","id":"paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/Email verification"},"paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/SMS verification":{"value":{"phone":"5551234567"},"key":"SMS verification","summary":"SMS verification","description":"SMS verification","id":"paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1send/post/requestBody/content/application~1json/examples/SMS verification"},"paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify SMS code":{"value":{"phone":"5551234567","code":"123456"},"key":"Verify SMS code","summary":"Verify SMS code","description":"Verify SMS code","id":"paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify SMS code"},"paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify email code":{"value":{"email":"john@example.com","code":"123456"},"key":"Verify email code","summary":"Verify email code","description":"Verify email code","id":"paths/~1partner~1v2~1account~1{accountId}~1identity-proof~1{id}~1verify/post/requestBody/content/application~1json/examples/Verify email code"},"paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses/200/content/application~1json/examples/Non-selectable practitioners":{"value":{"slotsByDate":{"1/15/2025":[{"startUnix":1736946000000,"endUnix":1736947800000,"practitionerId":42,"schedulerConfigId":7},{"startUnix":1736947800000,"endUnix":1736949600000,"practitionerId":55,"schedulerConfigId":12}],"1/16/2025":[{"startUnix":1737032400000,"endUnix":1737034200000,"practitionerId":42,"schedulerConfigId":7}]},"practitioners":[{"displayName":"Jane Smith","practitionerId":42,"firstAvailableSlot":1736946000000},{"displayName":"John Doe","practitionerId":55,"firstAvailableSlot":1736947800000}],"arePractitionersSelectable":false,"timeZone":"America/New_York"},"key":"Non-selectable practitioners","summary":"System auto-assigns the best-ranked practitioner per slot","description":"Non-selectable practitioners","id":"paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses/200/content/application~1json/examples/Non-selectable practitioners"},"paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses/200/content/application~1json/examples/Selectable practitioners":{"value":{"slotsByDate":{"1/15/2025":[{"startUnix":1736946000000,"endUnix":1736947800000,"practitionerToConfig":{"42":7,"55":12}},{"startUnix":1736947800000,"endUnix":1736949600000,"practitionerToConfig":{"42":7}}]},"practitioners":[{"displayName":"Jane Smith","practitionerId":42,"firstAvailableSlot":1736946000000},{"displayName":"John Doe","practitionerId":55,"firstAvailableSlot":1736946000000}],"arePractitionersSelectable":true,"timeZone":"America/New_York"},"key":"Selectable practitioners","summary":"Patient chooses practitioner; each slot lists all available practitioners","description":"Selectable practitioners","id":"paths/~1partner~1v2~1account~1{accountId}~1self-scheduling~1availability/get/responses/200/content/application~1json/examples/Selectable practitioners"}},"securitySchemeStore":{"PartnerApiKey":{"id":"PartnerApiKey","type":"apiKey","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Gateway key issued at partner onboarding. Required in addition to the OAuth Bearer token — the key identifies the partner to the gateway for rate limiting. See 'Rate Limits & Quotas' in the overview."},"children":[]}]}]}],"in":"header","paramName":"x-api-key"},"PartnerOAuth":{"id":"PartnerOAuth","type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 access token from integration webhook"}},"servers":[{"url":"/_mock/openapi","isMockServer":true,"description":"Mock server"},{"url":"https://api-prod.lobbie.com/lobbie/api","description":"Production"}]},"options":{"hideSidebar":true,"mockServer":{"url":"/_mock/openapi","position":"first","description":"Mock server"},"disableRouter":true,"downloadUrls":[{"url":"/_bundle/openapi.json?download"},{"url":"/_bundle/openapi.yaml?download"}],"excludeFromSearch":false,"specType":"openapi","markdocOptions":{"tags":{},"nodes":{},"components":{}},"metadata":{"title":"Lobbie Partner API","description":"# Partner API Overview\n\n## Authentication\n\nThe Partner API uses **OAuth 2.0 with AWS Cognito** for secure machine-to-machine (M2M) authentication.\n\n### Prerequisites\n\nBefore making API requests, you must complete the partner onboarding process:\n\n1. **Partner Registration**: Lobbie creates a partner integrator record with your unique `client_id`\n2. **Cognito Credentials**: Lobbie provides OAuth 2.0 client credentials (client ID and client secret)\n3. **API Gateway Key**: Lobbie provides an `x-api-key` value that identifies your integration for rate limiting (see [Rate Limits & Quotas](#rate-limits--quotas))\n4. **Account Grants**: Lobbie grants your integration access to specific accounts\n\nAll three credentials (`client_id`, `client_secret`, and `x-api-key`) are shown **only once** at onboarding — store them securely. If any are lost or compromised, contact Lobbie support immediately.\n\n### Obtaining an Access Token\n\nRequest an access token using the OAuth 2.0 client credentials by sending an HTTPS form POST. **Include the `x-api-key` header** — the token endpoint is gated by the same API key as the rest of the Partner API:\n\n```\nPOST https://api.lobbie.com/oauth2/token\nContent-Type: application/x-www-form-urlencoded\nx-api-key: <your_api_key>\n\ngrant_type=client_credentials&\nscope=prod-lobbie-api/partner-api&\nclient_id=<your_client_id>&\nclient_secret=<your_client_secret>\n```\n\nThe `scope` value is environment-prefixed. Use `prod-lobbie-api/partner-api` for production; Lobbie will provide the appropriate value for any non-production environment at onboarding.\n\nThe response contains a JWT access token:\n\n```json\n{\n    \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n    \"token_type\": \"Bearer\",\n    \"expires_in\": 3600\n}\n```\n\n> **Cache this token.** Tokens are valid for 60 minutes and the token endpoint has a much tighter rate limit than the main API (see [Rate Limits & Quotas](#rate-limits--quotas)). A well-behaved integration fetches a token *once* and reuses it until shortly before it expires.\n\n### Making Authenticated Requests\n\nEvery API request must include **both** headers: the OAuth Bearer token (which authenticates you) and the API key (which identifies you to the gateway for rate limiting):\n\n```\nAuthorization: Bearer <access_token>\nx-api-key: <your_api_key>\n```\n\nRequests missing the `x-api-key` header are rejected at the API Gateway edge with `403 Forbidden` before reaching the application. Requests with an invalid or revoked key are similarly rejected.\n\n### Token Management\n\n- Access tokens expire after the duration specified in `expires_in` (default: 60 minutes)\n- Request a new token before the current one expires\n- Store credentials securely—they grant access to protected health information (PHI)\n- If credentials are compromised, contact Lobbie support immediately to revoke and regenerate\n\n### Authorization\n\nYour partner integration must have an active grant to access each account. The API validates:\n\n1. The JWT token is valid and not expired\n2. Your `client_id` corresponds to an active partner integrator\n3. Your integration has an active grant to the requested account\n4. The requested location belongs to the specified account\n\n## Rate Limits & Quotas\n\nLimits are enforced per `x-api-key`. Two separate limits apply depending on which endpoint you're calling:\n\n**General API (`/lobbie/api/partner/v2/`*)** — sustained rate limit **25 requests/second** with a **daily quota of 250,000 requests**. We recommend targeting around **20 requests/second** in steady-state to absorb natural timing variability.\n\n**Token endpoint (`/oauth2/token`)** — enforced at a much tighter per-partner rate than the rest of the API. A correctly-implemented integration fetches a token *once per hour* and caches it until shortly before it expires; with that behavior you'll never approach the limit. If you're seeing 429s on `/oauth2/token`, your client is refreshing tokens far more often than needed — add caching rather than asking for a higher limit. Token calls count against the same daily quota as the rest of the API.\n\nThe daily quota resets at 00:00 UTC. Exceeding either limit returns `429 Too Many Requests` with a JSON body and a `Retry-After` header. The two causes are distinguished by the machine-readable `code` field — switch on `code`, don't parse the `message` prose:\n\n\n| `code`           | Cause                 | `Retry-After` | Response body                                                                                     | Expected back-off                                                                                     |\n| ---------------- | --------------------- | ------------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |\n| `THROTTLED`      | Rate too high         | `1`           | `{\"code\":\"THROTTLED\",\"message\":\"API rate limit exceeded. Retry after a short delay; throttle capacity refills within seconds.\"}` | Wait the second in `Retry-After`, then retry. Throttle capacity refills continuously.                 |\n| `QUOTA_EXCEEDED` | Daily quota exhausted | `3600`        | `{\"code\":\"QUOTA_EXCEEDED\",\"message\":\"Daily request quota exhausted. The quota resets at 00:00 UTC.\"}` | Stop until the quota resets at **00:00 UTC**. `Retry-After` is an hourly re-check hint, not the exact reset — retrying before 00:00 UTC keeps returning `QUOTA_EXCEEDED`. |\n\n\n`Retry-After` is expressed in seconds. Read `code` to decide how to react: `THROTTLED` clears within seconds, while `QUOTA_EXCEEDED` does not clear until the daily reset — treat them as short-wait and stop-until-reset respectively.\n\nIf your integration consistently approaches these limits, contact Lobbie.\n\n## Common Errors\n\n\n| Status | Error                | Description                                                                                   |\n| ------ | -------------------- | --------------------------------------------------------------------------------------------- |\n| 401    | Unauthorized         | Invalid, expired, or missing access token                                                     |\n| 403    | Forbidden            | Missing/invalid `x-api-key`, or integration lacks access to the requested account or location |\n| 404    | Not Found            | Resource not found or does not belong to the authorized account                               |\n| 422    | Unprocessable Entity | Validation failed — see `error.fields` for per-property details                               |\n| 429    | Too Many Requests    | Rate limit or daily quota exceeded (see [Rate Limits & Quotas](#rate-limits--quotas))         |\n\n\n## HIPAA & Compliance\n\n- All patient data is Protected Health Information (PHI)\n- Encrypt data at rest and in transit\n- Maintain audit logs of all data access\n- Sign Business Associate Agreement (BAA) before production access\n- Follow data retention policies per agreement\n\n## Webhooks\n\nLobbie can **POST JSON event payloads** to an **HTTPS** URL you configure. Managing webhook endpoints (create, list, update, delete, discover event types, send a test delivery) uses the **Partner API** with the same **Bearer token** and `x-api-key` as [Making Authenticated Requests](#making-authenticated-requests).\n\n### Registering and managing endpoints\n\n1. **List subscribable event types** — `GET /lobbie/api/partner/v2/webhook/event-types` returns the event type strings you may use in `eventTypes` when creating or updating an endpoint (alphabetical list; **source of truth** as new types are added).\n2. **Create an endpoint** — `POST /lobbie/api/partner/v2/webhook` with a JSON body:\n  - `url` — must be **HTTPS** with a public host (Lobbie validates the URL).\n  - `eventTypes` — **non-empty** array; every value must appear in `GET .../event-types`.\n  - `name` — optional label.\n3. **Signing secret** — On **create** only, the response includes `signingSecret`. Store it immediately; it is **not** returned on later GET/list responses.\n\n> **Treat `signingSecret` like a password.** You need it to verify `Lobbie-Signature` on inbound POSTs. If it is lost, delete the endpoint and create a new one.\n\nRead, update, list, delete, and test-send are documented under the **Webhooks** tag in OpenAPI (paths under `/lobbie/api/partner/v2/webhook`).\n\n### Supported event types\n\nWhen creating or updating an endpoint, `eventTypes` must contain one or more of the following subscribable event types. The same list is returned alphabetically by `GET /lobbie/api/partner/v2/webhook/event-types` (the **source of truth** as new types are added).\n\n\n| Event type                | Description                                                                     |\n| ------------------------- | ------------------------------------------------------------------------------ |\n| `appointment.created`     | A new appointment was created                                                  |\n| `appointment.updated`     | An existing appointment was updated                                            |\n| `appointment.deleted`     | An appointment was deleted                                                     |\n| `patient.created`         | A new patient was created                                                      |\n| `patient.updated`         | An existing patient was updated                                                |\n| `patient.deleted`         | A patient was deleted                                                          |\n| `form-packet.created`     | A new form packet was created                                                  |\n| `form-packet.updated`     | An existing form packet was updated                                            |\n| `payment.created`         | A successful charge was recorded (not emitted by all accounts — see [Payment events](#payment-events)) |\n| `payment-attempt.created` | A payment attempt was first recorded (see [Payment events](#payment-events))   |\n| `payment-attempt.updated` | A payment attempt's state changed (see [Payment events](#payment-events))      |\n| `subscription.created`    | A subscription was created (see [Subscription events](#subscription-events))   |\n| `subscription.updated`    | A subscription changed, including cancellation (see [Subscription events](#subscription-events)) |\n\n\n`test.ping` is used only for test deliveries (`POST .../webhook/{webhookId}/test`); it is **not** subscribable and does **not** appear in `GET .../event-types`.\n\n### Test delivery\n\n`POST /lobbie/api/partner/v2/webhook/{webhookId}/test` triggers an **immediate outbound POST** to your configured URL so you can validate connectivity, timeouts, and signature verification. The event type for this delivery is `test.ping`; it is **not** included in `GET .../event-types` and is **not** something you subscribe to.\n\nThe request body requires an `accountId` you've been granted access to. Webhook endpoints are integrator-scoped and serve every account you're granted, so there is no implicit account to test under — you name one explicitly. The value is published verbatim as the delivery envelope's `accountId`, exactly as it would be on a real event. A request naming an account you can't access returns `404`.\n\n### Inbound delivery (your server)\n\nLobbie delivers events with:\n\n\n| Aspect         | Value                  |\n| -------------- | ---------------------- |\n| Method         | `POST`                 |\n| `Content-Type` | `application/json`     |\n| Body           | UTF-8 JSON (see below) |\n\n\n**Headers you should read:**\n\n\n| Header                      | Purpose                                                                                              |\n| --------------------------- | ---------------------------------------------------------------------------------------------------- |\n| `Lobbie-Signature`          | `t=<unix_seconds>,v1=<hex_hmac_sha256>` (see [Verifying signatures](#verifying-signatures))          |\n| `Lobbie-Webhook-Event-Id`   | Unique id for the event (e.g. `evt_...`); use for idempotency / deduplication                        |\n| `Lobbie-Webhook-Event-Type` | For the test endpoint: `test.ping`. Otherwise matches your subscription (e.g. `appointment.created`) |\n\n\n### Request body shape\n\nThe JSON body is an envelope plus an event-specific `data` object:\n\n\n| Field             | Description                                                                                                          |\n| ----------------- | -------------------------------------------------------------------------------------------------------------------- |\n| `version`         | Payload format version (e.g. `1`)                                                                                    |\n| `eventId`         | Same id as `Lobbie-Webhook-Event-Id`                                                                                 |\n| `eventType`       | Same string as `Lobbie-Webhook-Event-Type`                                                                           |\n| `accountId`       | Lobbie account the event source belongs to. Stable for the lifetime of the event and present on every delivery — use it to route incoming events without joining on fields inside `data`. For `test.ping` there is no source entity, so this is the `accountId` you supplied in the test request. |\n| `environment`     | Lobbie deployment identifier                                                                                         |\n| `occurredAt`      | When the event occurred (ISO-8601 instant)                                                                           |\n| `sentAt`          | When this delivery was sent (ISO-8601 instant)                                                                       |\n| `deliveryAttempt` | Attempt number for this delivery (starts at `1`; increments if Lobbie retries)                                       |\n| `data`            | Event payload (always a JSON object); see below                                                                      |\n\n\nExample (illustrative shape only):\n\n```json\n{\n  \"version\": \"1\",\n  \"eventId\": \"evt_550e8400-e29b-41d4-a716-446655440000\",\n  \"eventType\": \"appointment.created\",\n  \"accountId\": 12345,\n  \"environment\": \"prod\",\n  \"occurredAt\": \"2025-03-15T14:30:00Z\",\n  \"sentAt\": \"2025-03-15T14:30:01Z\",\n  \"deliveryAttempt\": 1,\n  \"data\": {}\n}\n```\n\n> The envelope above is published as the **`WebhookEnvelope`** schema under `components.schemas` in this OpenAPI document — generate it alongside the REST models to get typed inbound webhook handlers.\n\n### Event `data` and REST responses\n\nFor domain events, the `data` object uses the **same JSON structure** as the corresponding Partner API **success response body**—you can reuse the same models and OpenAPI schemas you already use for REST.\n\n**Example — `appointment.created`:** `data` is an **Appointment** object with the same fields and types as the **200 OK** body of:\n\n`GET /lobbie/api/partner/v2/account/{accountId}/location/{locationId}/appointment/{appointmentId}`\n\nRefer to the OpenAPI document for that operation’s response schema.\n\nFor `test.ping` (test send only), `data` is a small object with `endpointId` and `message`.\n\n### Payment events\n\nLobbie emits three payment-related event types. Pick subscriptions based on what you need to do.\n\n| Event type | When it fires | `data` shape |\n| --- | --- | --- |\n| `payment.created` | Once per successful charge — **emitted only for accounts on Lobbie's current payments platform; some accounts never emit it**. Where present, an authoritative signal that money moved. | `Payment` (same as the `GET .../payments/{paymentId}` 200 OK body) |\n| `payment-attempt.created` | When a payment attempt is first recorded, before submission. `status` is typically `PENDING`. | `PaymentAttempt` (same as the `GET .../payment-attempts/{paymentAttemptId}` 200 OK body) |\n| `payment-attempt.updated` | When a payment attempt's state changes, including the transition to a terminal status (`SUCCEEDED`, `FAILED`, `CANCELED`). | `PaymentAttempt` (same shape as `.created`) |\n\n**Subscription guidance:**\n\n- **For billing integrations** (record-of-truth that a charge succeeded): subscribe to `payment-attempt.updated` and treat `status == SUCCEEDED` as the success signal. This is the only success signal emitted by **every** account, so it is the reliable choice for billing.\n- **For failure handling** (retry workflows, patient notifications, dunning): subscribe to `payment-attempt.updated` and filter on `status == FAILED`.\n- **`payment.created` is an optional convenience** for accounts that emit it (fires once per successful charge). Not all accounts do, so do not rely on it as a universal success signal. **Do not** use both it and `payment-attempt.updated` (`SUCCEEDED`) as billing triggers for the same account — that double-counts every successful charge. Pick one.\n\nEvery successful payment emits `payment-attempt.created` and `payment-attempt.updated` (with a terminal `status`); accounts on Lobbie's current payments platform additionally emit `payment.created`. These events may be observed in any order — dedupe retries by `eventId`, reconcile by `occurredAt`, and re-read the resource via the corresponding `GET` endpoint when you need an authoritative current state.\n\n### Subscription events\n\nLobbie emits two subscription event types, for **every** account regardless of payments platform.\n\n| Event type | When it fires | `data` shape |\n| --- | --- | --- |\n| `subscription.created` | When a subscription is created. | `Subscription` (same as the `GET .../subscription/{subscriptionId}` 200 OK body) |\n| `subscription.updated` | When any field of a subscription changes — status, payment method, terms, or a next-billing-date advance. | `Subscription` (same shape as `.created`) |\n\n**Subscription guidance:**\n\n- **Cancellation is a status transition, not a delete.** A cancelled subscription is delivered as a `subscription.updated` whose `data.status` is `CANCELLED`. There is no `subscription.deleted` event.\n- **`subscription.updated` fires on any change**, not only status transitions. To detect a transition (such as active → cancelled), compare `data.status` against the last value you recorded for that subscription — the same pattern used for `payment-attempt.updated`.\n- `data.status` uses the unified vocabulary documented on the Subscription resource (`DRAFT`, `ACTIVE`, `PENDING`, `PAUSED`, `CANCELLED`, `COMPLETED`, `FAILED`, `VOID`), identical to what the `GET .../subscription` endpoints return for the same account. On some accounts an overdue or failing-payment subscription is surfaced as `ACTIVE` until it is cancelled or completes — the webhook matches the `GET` endpoint in this respect.\n- These events may be observed in any order — dedupe retries by `eventId`, reconcile by `occurredAt`, and re-read the subscription via `GET` when you need an authoritative current state.\n\n### Verifying signatures\n\nEach inbound POST is signed with **HMAC-SHA256** using your endpoint's `signingSecret` (UTF-8 bytes of the string as the HMAC key).\n\nParse the `Lobbie-Signature` header. It uses the form `t=<unix_seconds>,v1=<hex_hmac_sha256>`.\n\nCompute **HMAC-SHA256** over the literal bytes: UTF-8 encoding of `t` as a decimal digit string, then ASCII `.` (`0x2E`), then the raw HTTP request body bytes.\n\nCompare your digest to `v1` using a **constant-time** equality check (compare the decoded digest bytes, not string shortcuts on secrets).\n\nOn retries, Lobbie may send a new JSON body: `sentAt`, `deliveryAttempt`, and the `t` value in `Lobbie-Signature` change to match that attempt. Verify each POST with that request's `t` and raw body bytes — do not reuse an HMAC you computed for an earlier delivery.\n\n### Acknowledging delivery\n\nAfter you accept the payload, respond with **any HTTP status in the 2xx range** so Lobbie records a successful delivery.\n\n### Retries\n\nLobbie will re-send a failed or timed-out request with exponential backoff between attempts after each failure: approximately **2 minutes**, **4 minutes**, **8 minutes**, then **15 minutes**. After **5 total attempts** (the first attempt plus four retries), the delivery is treated as failed and no further retries are made — total recovery window is roughly **half an hour**. The `deliveryAttempt` field in the JSON body indicates which attempt you are handling (1-indexed). Each retry is a new request with an updated body and signature (see [Verifying signatures](#verifying-signatures)).\n\n### Delivery guarantees\n\nDesign your handler around these guarantees. They are intrinsic to how delivery works and will not change without a versioned, announced change.\n\n- **At-least-once delivery once an event is accepted for delivery.** Once an event has been accepted onto the delivery queue, it will be attempted at least once and may arrive more than once (e.g. a retry after your server accepted the request but the response was lost). **Deduplicate by `eventId`** (`Lobbie-Webhook-Event-Id`) and make your handler idempotent. `eventId` and `occurredAt` are stable across every retry of the same event; only `sentAt`, `deliveryAttempt`, and the signature `t` change per attempt. Note that acceptance onto the delivery queue happens after the originating database transaction commits and is best-effort; in the rare case the queue is unreachable at that moment the event may not be delivered. Lobbie alerts internally on those failures.\n- **No ordering guarantee.** Events are delivered over an unordered queue. Do not assume that delivery order matches the order changes occurred — even for the same entity. Order and reconcile on your side using `occurredAt` (and `eventId` to dedupe). For example, an `appointment.updated` may arrive before the `appointment.created` for the same appointment.\n- **No backfill for endpoints registered after an event occurs.** Subscriptions are evaluated at the moment the entity changes, not at delivery time. An endpoint created (or a newly added event-type subscription) after a change occurred will **not** receive that earlier event. There is no replay; only changes that happen after the subscription exists are delivered.\n- **Delete events carry metadata only.** For deletion events the entity no longer exists by delivery time, so the payload's `data` contains identity only — the entity type and its id — and **no entity body**. The envelope (`eventId`, `occurredAt`, `eventType`) still applies. Use the prior `created`/`updated` events (deduplicated by `eventId`) if you need the last-known state of a deleted entity.\n\n---\n\n# Terminology\n\nThis glossary defines domain-specific terms used throughout the Lobbie Partner API.\n\n---\n\n## Core Entities\n\n### Account\n\nA healthcare practice or organization using Lobbie. Each account contains practice-wide settings and configurations, and can have multiple locations. All API access is scoped to a specific account via OAuth tokens.\n\n### Location\n\nA physical practice site, clinic, or virtual care location within an account. Locations have their own addresses, staff assignments, schedules, and operational settings. Appointments, forms, and many operations are location-scoped. Each location has timezone information critical for accurate scheduling. Locations may have an optional `storeId` that partners can use to correlate Lobbie locations with their own systems.\n\n### Patient\n\nAn individual receiving healthcare services from a specific account. Contains demographic information (name, date of birth) and contact details (email, phone). Serves as the central entity linking appointments, forms, invoices, and clinical data. Subject to HIPAA privacy requirements.\n\n---\n\n## Scheduling\n\n### Appointment\n\nA scheduled visit between a patient and practitioner at a specific location and time. Appointments track the complete visit lifecycle from initial scheduling through check-in, the visit itself, and completion or cancellation. Each appointment links to an appointment type, patient, practitioner, and location.\n\n### Appointment Type\n\nA template defining a schedulable service, including duration, telehealth settings, display color, and patient-facing description/instructions. Examples: \"New Patient Consultation\" (30 min), \"Follow-up Visit\" (15 min), \"Telehealth Checkup\" (20 min). Appointment types determine what services patients can book and how long they're scheduled.\n\n### Practitioner\n\nA staff member designated as a clinical provider who can see patients and be scheduled for appointments. Practitioners have credentials (MD, DO, NP, PA, RN), NPI numbers, specialties, and license information. All practitioners are staff members, but not all staff are practitioners.\n\n### Self-Scheduling\n\nPatient-initiated appointment booking through embeddable widgets or API integration. Self-scheduling respects practice availability rules, appointment type configurations, and booking windows. Patients can browse available times and complete bookings without staff intervention.\n\n### Self-Scheduling Attempt\n\nA record of a patient's journey through the self-scheduling process, from initiation to completion or abandonment. Captures step-by-step progress for conversion analysis, identifying drop-off points, and triggering follow-up workflows for incomplete attempts.\n\n---\n\n## Staff & Access\n\n### Staff Member\n\nAny team member with system access, including administrative staff, clinical support, and practitioners. Staff have role assignments determining their permissions and location access.\n\n### Role Group\n\nA permission set defining capabilities and access levels for staff members. Role groups control what actions staff can perform within the system, from standard user access to full administrative privileges. Staff members can have multiple role groups assigned, combining permissions as needed.\n\n---\n\n## Forms & Documentation\n\n### Form Template\n\nA reusable form design defining structure, fields, validation rules, and conditional logic. Templates are created once and used to generate form instances for patients. Form templates support versioning—when a template is modified, a new version is created while preserving previous versions for historical form submissions. Examples: \"Patient Intake Form\", \"HIPAA Consent\", \"Medical History Questionnaire\".\n\n### Form Group\n\nA collection of one or more form instances assigned to a patient for completion. Form groups track overall completion status and can include multiple related forms. A form group is considered complete when all forms within it have been submitted, and can be archived when no longer needed.\n\n### Form\n\nAn individual form instance within a form group, based on a form template version. Each form tracks its own completion status and contains the patient's responses.\n\n### Form Element\n\nA single field or component within a form template that captures patient input or displays content. Element types include: text inputs, text areas, dropdowns, checkboxes, radio buttons, date pickers, signatures, initials, file uploads, phone numbers, email addresses, addresses, and specialized types like payment fields and body diagrams. Elements can be configured as required or optional, and can have visibility rules controlling who can view or edit them (patient only, staff only, or both).\n\n### Form Answer\n\nA patient's response to a specific form element. Answers are stored per element and can be text, selections, dates, signatures, or file uploads depending on the element type.\n\n### Form Template Group\n\nA predefined collection of form templates commonly assigned together. Simplifies assigning multiple related forms in a single operation (e.g., \"New Patient Packet\" containing intake, consent, and history forms).\n\n---\n\n## Billing & Payments\n\n### Invoice\n\nAn itemized billing statement for a patient detailing charges for services, products, taxes, and fees. Invoices progress through a lifecycle from creation to payment or cancellation. Invoices can be linked to appointments or created independently.\n\n### Invoice Line Item\n\nA single charge entry within an invoice. Line items specify quantity, unit price, and description, and can represent services, products, adjustments, or taxes. May reference billing codes and associated care resources.\n\n### Payment Request\n\nA trackable record of a payment’s lifecycle, from initiation to final settlement. Each request tracks its status from creation through payment or expiration, whether triggered as a remote request sent to a patient (via email or SMS) or entered directly by staff for immediate processing.\n\n### Recurring Payment\n\nAn automated payment plan with scheduled charges at defined intervals. Used for payment plans, memberships, and subscription services. Configured with a frequency (weekly, monthly, etc.), amount, linked payment method, and optional end date.\n\n---\n\n## Labs & Clinical\n\n### Lab\n\nA laboratory order containing one or more test panels with results. Labs track progress from order placement through result delivery. Labs can be in-house or from external vendors and link to patients and optionally appointments.\n\n### Test Panel\n\nA grouping of related lab tests within a lab order. Examples: \"Comprehensive Metabolic Panel\", \"Complete Blood Count\", \"Lipid Panel\". Each panel contains multiple test components.\n\n### Test Component\n\nAn individual lab measurement within a test panel. Contains the test name, result value, unit of measurement, reference range, and an indicator of whether the result is normal or abnormal.\n\n### Health Profile\n\nStructured patient health information including medical history, allergies, medications, and clinical data collected through intake forms and clinical encounters.\n\n---\n\n## Patient Management\n\n### Category\n\nA service category that can function as either a CRM-tracked sales pipeline or a simple organizational tag. When CRM-tracked, categories enable full pipeline tracking through status stages with dashboard visibility. When not CRM-tracked, categories function as simple groupings for billing, inventory, or reporting. Examples of CRM categories: \"Men's Health - Testosterone\", \"Weight Loss - Semaglutide\". Examples of simple categories: \"Lab Supplies\", \"Office Visits\".\n\n### Patient Category\n\nA patient's enrollment in a specific service category with CRM status tracking. Represents the link between a patient and a category, tracking their progress through the associated CRM pipeline. Appears as an \"Opportunity\" in CRM dashboards. Tracks status transitions with a complete audit trail.\n\n### CRM Status Group\n\nA reusable CRM workflow pipeline (sales/marketing funnel) that defines the customer journey stages. Think of it as the sales funnel template—the workflow (HOW you sell) is separated from the product (WHAT you sell). Multiple categories often share the same sales process. Examples: \"Digital Marketing Funnel\" with stages like Cold Lead → Engaged → Sales Qualified → Closed Won; \"Patient Care Journey\" with stages like Intake → Insurance Verified → In Treatment → Complete.\n\n### CRM Status\n\nAn individual stage within a CRM status group representing where a patient is in a workflow. Status progression is tracked through transitions, providing a complete audit trail. Examples: \"Cold Lead\", \"Sales Qualified\", \"Proposal Sent\", \"Closed Won\", \"Closed Lost\".\n\n---\n\n## Communications\n\n### Notification\n\nA system-generated message sent to a patient via email or SMS. Notifications are sent for various purposes including appointment reminders, form assignments, payment requests, and account recovery. Each notification tracks its delivery status.\n\n### Notification Group\n\nConfiguration defining how and when patients receive specific types of communications, customizable per location or appointment type.\n\n---\n\n## Identity & Security\n\n### Identity Proof\n\nA verification session for authenticating patient identity through email and/or SMS code verification. Used for patient portal authentication, self-scheduling verification, and secure access to patient data. Each session generates a secure token and tracks which contact methods have been verified.\n\n### Verification Method\n\nThe channel(s) required to prove identity, which can be email only, SMS only, or both. The verification method determines what must be verified before the identity proof is considered complete."}},"baseSlug":"/openapi","routesMapping":{}}