{"items":[{"type":"link","label":"Speedy Sticks API","link":"/openapi","routeSlug":"/openapi","content":{"contentType":"overview","meta":{"name":"Speedy Sticks 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":"externallink","title":"URL","titleTranslationKey":"info.contact.url","label":"https://api.speedysticks.com","url":"https://api.speedysticks.com"},{"kind":"email","title":"E-mail","titleTranslationKey":"info.contact.name","email":"info@speedysticks.com","label":"info@speedysticks.com","withCopyButton":true,"copyContent":"info@speedysticks.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},{"url":"https://api.speedysticks.com","description":"Production"}],"mode":"default"}]}],"children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"header","level":1,"label":"Speedy Sticks API (1.0.0)","showPageActions":true},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":"API for retrieving healthcare price estimates and managing client integrations."}],"sectionId":"/openapi"}],"sectionId":"/openapi"}]}]}},{"type":"group","label":"Auth","link":"/openapi/auth","routeSlug":"/openapi/auth","items":[{"label":"Send a two factor authentication login code","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/auth/paths/~1request-code/post","routeSlug":"/openapi/auth/paths/~1request-code/post","metadata":{"seo":{"title":"Send a two factor authentication login code","description":"Sends a one-time code to the provided email address."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Send a two factor authentication login code","isWebhook":false,"pointer":"/paths/~1request-code/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Send a two factor authentication login code","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Sends a one-time code to the provided email address."},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_31"}},"schemaId":"schema_31","pointer":"/paths/~1request-code/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/request-code","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"schema_31"}},"responseCodes":["200","400"],"pointer":"/request-code","href":"auth/paths/~1request-code/post","summary":"Send a two factor authentication login code"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"schemaId":"schema_31","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_31"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Code sent successfully."},{"code":"400","description":"Missing or invalid email."}],"pointer":"/paths/~1request-code/post/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/auth/paths/~1request-code/post"}],"panels":[]}]},"httpPath":"/request-code"},{"label":"Login with two factor authentication code","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/auth/paths/~1login/post","routeSlug":"/openapi/auth/paths/~1login/post","metadata":{"seo":{"title":"Login with two factor authentication code","description":"Authenticates a user using their email and the one-time code they were sent."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Login with two factor authentication code","isWebhook":false,"pointer":"/paths/~1login/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Login with two factor authentication code","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Authenticates a user using their email and the one-time code they were sent."},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_32"}},"schemaId":"schema_32","pointer":"/paths/~1login/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/login","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"schema_32"}},"responseCodes":["200","401"],"pointer":"/login","href":"auth/paths/~1login/post","summary":"Login with two factor authentication code"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"schemaId":"schema_32","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_32"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Authenticated successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AuthResponse"}},"schemaId":"components/schemas/AuthResponse"},{"code":"401","description":"Invalid or expired code."}],"pointer":"/paths/~1login/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AuthResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AuthResponse"}}},{"code":"401"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/auth/paths/~1login/post"}],"panels":[]}]},"httpPath":"/login"},{"label":"Login with password","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/auth/paths/~1login-password/post","routeSlug":"/openapi/auth/paths/~1login-password/post","metadata":{"seo":{"title":"Login with password","description":"Authenticates a user using their email and password."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Login with password","isWebhook":false,"pointer":"/paths/~1login-password/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Login with password","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Authenticates a user using their email and password."},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_33"}},"schemaId":"schema_33","pointer":"/paths/~1login-password/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/login-password","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"schema_33"}},"responseCodes":["200","401"],"pointer":"/login-password","href":"auth/paths/~1login-password/post","summary":"Login with password"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"schemaId":"schema_33","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_33"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Authenticated successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AuthResponse"}},"schemaId":"components/schemas/AuthResponse"},{"code":"401","description":"Invalid credentials."}],"pointer":"/paths/~1login-password/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/AuthResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/AuthResponse"}}},{"code":"401"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/auth/paths/~1login-password/post"}],"panels":[]}]},"httpPath":"/login-password"},{"label":"Request a bearer token","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/auth/paths/~1api~1request-token/post","routeSlug":"/openapi/auth/paths/~1api~1request-token/post","metadata":{"seo":{"title":"Request a bearer token","description":"Exchange your API key for a short-lived bearer token. The token expires every 15 minutes and must be used in the Authorization header for all subsequent requests."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Request a bearer token","isWebhook":false,"pointer":"/paths/~1api~1request-token/post","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Request a bearer token","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Exchange your API key for a short-lived bearer token. The token expires every 15 minutes and must be used in the Authorization header for all subsequent requests."},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"ApiKey"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/api/request-token","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"ApiKey","in":"header"}],"scopes":[]}],"responseCodes":["201","400","401","404"],"pointer":"/api/request-token","href":"auth/paths/~1api~1request-token/post","summary":"Request a bearer token"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Token generated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_34"}},"schemaId":"schema_34"},{"code":"400","description":"Account is not in an active state."},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"},{"code":"404","description":"Invalid API key."}],"pointer":"/paths/~1api~1request-token/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"schema_34","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_34"}}},{"code":"400"},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/auth/paths/~1api~1request-token/post"}],"panels":[]}]},"httpPath":"/api/request-token"}],"content":{"contentType":"group","meta":{"name":"Auth"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Auth","showPageActions":true},{"nodeType":"markdoc","content":"Authentication endpoints for logging in and obtaining tokens."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/request-code","summary":"Send a two factor authentication login code","prefix":{"name":"post","color":"post"},"badges":[],"link":"/auth/paths/~1request-code/post","deprecated":false},{"title":"/login","summary":"Login with two factor authentication code","prefix":{"name":"post","color":"post"},"badges":[],"link":"/auth/paths/~1login/post","deprecated":false},{"title":"/login-password","summary":"Login with password","prefix":{"name":"post","color":"post"},"badges":[],"link":"/auth/paths/~1login-password/post","deprecated":false},{"title":"/api/request-token","summary":"Request a bearer token","prefix":{"name":"post","color":"post"},"badges":[],"link":"/auth/paths/~1api~1request-token/post","deprecated":false}]}]}]}]}},{"type":"group","label":"API Keys","link":"/openapi/api-keys","routeSlug":"/openapi/api-keys","items":[{"label":"Get API key","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/api-keys/paths/~1api~1key/get","routeSlug":"/openapi/api-keys/paths/~1api~1key/get","metadata":{"seo":{"title":"Get API key","description":"Returns the current API key and associated analytics for the authenticated client account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Get API key","isWebhook":false,"pointer":"/paths/~1api~1key/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get API key","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns the current API key and associated analytics for the authenticated client account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api/key","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401"],"pointer":"/api/key","href":"api-keys/paths/~1api~1key/get","summary":"Get API key"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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":"API key and analytics retrieved successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_36"}},"schemaId":"schema_36"},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"}],"pointer":"/paths/~1api~1key/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_36","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_36"}}},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/api-keys/paths/~1api~1key/get"}],"panels":[]}]},"httpPath":"/api/key"},{"label":"Issue a new API key","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/api-keys/paths/~1api~1key~1regenerate/post","routeSlug":"/openapi/api-keys/paths/~1api~1key~1regenerate/post","metadata":{"seo":{"title":"Issue a new API key","description":"Generates and returns a new API key for the authenticated client account, replacing the existing one."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Issue a new API key","isWebhook":false,"pointer":"/paths/~1api~1key~1regenerate/post","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Issue a new API key","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Generates and returns a new API key for the authenticated client account, replacing the existing one."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/api/key/regenerate","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["201","401"],"pointer":"/api/key/regenerate","href":"api-keys/paths/~1api~1key~1regenerate/post","summary":"Issue a new API key"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"New API key issued successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_37"}},"schemaId":"schema_37"},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"}],"pointer":"/paths/~1api~1key~1regenerate/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"schema_37","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_37"}}},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/api-keys/paths/~1api~1key~1regenerate/post"}],"panels":[]}]},"httpPath":"/api/key/regenerate"}],"content":{"contentType":"group","meta":{"name":"API Keys"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"API Keys","showPageActions":true},{"nodeType":"markdoc","content":"Manage your Speedy Sticks API key and view usage analytics."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/api/key","summary":"Get API key","prefix":{"name":"get","color":"get"},"badges":[],"link":"/api-keys/paths/~1api~1key/get","deprecated":false},{"title":"/api/key/regenerate","summary":"Issue a new API key","prefix":{"name":"post","color":"post"},"badges":[],"link":"/api-keys/paths/~1api~1key~1regenerate/post","deprecated":false}]}]}]}]}},{"type":"group","label":"Patients","link":"/openapi/patients","routeSlug":"/openapi/patients","items":[{"label":"Create a patient","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/paths/~1api~1patient/post","routeSlug":"/openapi/patients/paths/~1api~1patient/post","metadata":{"seo":{"title":"Create a patient","description":"Creates a new patient record associated with the authenticated client account. If an externalId is provided and already exists for this account, a 409 is returned with the existing patient ID."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Create a patient","isWebhook":false,"pointer":"/paths/~1api~1patient/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a patient","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Creates a new patient record associated with the authenticated client account. If an externalId is provided and already exists for this account, a 409 is returned with the existing patient ID."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_38"}},"schemaId":"schema_38","pointer":"/paths/~1api~1patient/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/api/patient","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_38"}},"responseCodes":["201","401","409"],"pointer":"/api/patient","href":"patients/paths/~1api~1patient/post","summary":"Create a patient"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"schemaId":"schema_38","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_38"}},"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":"schema_39"}},"schemaId":"schema_39"},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"},{"code":"409","description":"A patient with this external ID already exists.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_40"}},"schemaId":"schema_40"}],"pointer":"/paths/~1api~1patient/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"schema_39","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_39"}}},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}},{"code":"409","schemaId":"schema_40","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_40"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/paths/~1api~1patient/post"}],"panels":[]}]},"httpPath":"/api/patient"},{"label":"Get patient by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/paths/~1api~1patient~1{id}/get","routeSlug":"/openapi/patients/paths/~1api~1patient~1{id}/get","metadata":{"seo":{"title":"Get patient by ID","description":"Retrieves a patient record by their internal ID. The patient must be assigned to the authenticated account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Get patient by ID","isWebhook":false,"pointer":"/paths/~1api~1patient~1{id}/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":"Retrieves a patient record by their internal ID. The patient must be assigned to the authenticated account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_41","description":"The patient's internal ID","required":true}],"pointer":"/paths/~1api~1patient~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api/patient/{id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_41"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/api/patient/{id}","href":"patients/paths/~1api~1patient~1{id}/get","summary":"Get patient by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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 retrieved successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Patient"}},"schemaId":"components/schemas/Patient"},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"},{"code":"404","description":"Patient not found."}],"pointer":"/paths/~1api~1patient~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Patient","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Patient"}}},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/paths/~1api~1patient~1{id}/get"}],"panels":[]}]},"httpPath":"/api/patient/{id}"},{"label":"Update a patient","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/paths/~1api~1patient~1{id}/patch","routeSlug":"/openapi/patients/paths/~1api~1patient~1{id}/patch","metadata":{"seo":{"title":"Update a patient","description":"Updates an existing patient record. The externalId field cannot be changed after creation."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Update a patient","isWebhook":false,"pointer":"/paths/~1api~1patient~1{id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update a patient","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Updates an existing patient record. The externalId field cannot be changed after creation."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_41","description":"The patient's internal ID","required":true}],"pointer":"/paths/~1api~1patient~1{id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_42"}},"schemaId":"schema_42","pointer":"/paths/~1api~1patient~1{id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/api/patient/{id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_41"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_42"}},"responseCodes":["200","401","404"],"pointer":"/api/patient/{id}","href":"patients/paths/~1api~1patient~1{id}/patch","summary":"Update a patient"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"schemaId":"schema_42","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_42"}},"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":"schema_39"}},"schemaId":"schema_39"},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"},{"code":"404","description":"Patient not found."}],"pointer":"/paths/~1api~1patient~1{id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_39","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_39"}}},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/paths/~1api~1patient~1{id}/patch"}],"panels":[]}]},"httpPath":"/api/patient/{id}"},{"label":"Get patient by external ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/patients/paths/~1api~1patient~1{patientid}~1external-id/get","routeSlug":"/openapi/patients/paths/~1api~1patient~1{patientid}~1external-id/get","metadata":{"seo":{"title":"Get patient by external ID","description":"Looks up a patient using their external ID from your system."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Get patient by external ID","isWebhook":false,"pointer":"/paths/~1api~1patient~1{patientId}~1external-id/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get patient by external ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Looks up a patient using their external ID from your system."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"patientId","in":"path","schemaId":"schema_43","description":"The patient's external ID from your system","required":true}],"pointer":"/paths/~1api~1patient~1{patientId}~1external-id/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api/patient/{patientId}/external-id","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[{"name":"patientId","in":"path","required":true,"schemaId":"schema_43"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/api/patient/{patientId}/external-id","href":"patients/paths/~1api~1patient~1{patientid}~1external-id/get","summary":"Get patient by external ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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 retrieved successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Patient"}},"schemaId":"components/schemas/Patient"},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"},{"code":"404","description":"Patient not found."}],"pointer":"/paths/~1api~1patient~1{patientId}~1external-id/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Patient","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Patient"}}},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/patients/paths/~1api~1patient~1{patientid}~1external-id/get"}],"panels":[]}]},"httpPath":"/api/patient/{patientId}/external-id"}],"content":{"contentType":"group","meta":{"name":"Patients"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Patients","showPageActions":true},{"nodeType":"markdoc","content":"Manage patients associated with your account."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/api/patient","summary":"Create a patient","prefix":{"name":"post","color":"post"},"badges":[],"link":"/patients/paths/~1api~1patient/post","deprecated":false},{"title":"/api/patient/{id}","summary":"Get patient by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/paths/~1api~1patient~1{id}/get","deprecated":false},{"title":"/api/patient/{id}","summary":"Update a patient","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/patients/paths/~1api~1patient~1{id}/patch","deprecated":false},{"title":"/api/patient/{patientId}/external-id","summary":"Get patient by external ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/patients/paths/~1api~1patient~1{patientid}~1external-id/get","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/paths/~1api~1appointment/get","routeSlug":"/openapi/appointments/paths/~1api~1appointment/get","metadata":{"seo":{"title":"List appointments","description":"Returns all appointments associated with the authenticated client account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"List appointments","isWebhook":false,"pointer":"/paths/~1api~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":"Returns all appointments associated with the authenticated client account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api/appointment","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401"],"pointer":"/api/appointment","href":"appointments/paths/~1api~1appointment/get","summary":"List appointments"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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":"List of appointments retrieved successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_44"}},"schemaId":"schema_44"},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"}],"pointer":"/paths/~1api~1appointment/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_44","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_44"}}},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/paths/~1api~1appointment/get"}],"panels":[]}]},"httpPath":"/api/appointment"},{"label":"Book an appointment","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointments/paths/~1api~1appointment/post","routeSlug":"/openapi/appointments/paths/~1api~1appointment/post","metadata":{"seo":{"title":"Book an appointment","description":"Books a new appointment for a patient. Billing type determines payment requirements — bill-to-patient appointments require a valid Stripe paymentMethod ID collected via the setup intent flow. Bill-to-account falls back to the account card on file. Monthly invoice requires no payment method."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Book an appointment","isWebhook":false,"pointer":"/paths/~1api~1appointment/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Book an appointment","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Books a new appointment for a patient. Billing type determines payment requirements — bill-to-patient appointments require a valid Stripe paymentMethod ID collected via the setup intent flow. Bill-to-account falls back to the account card on file. Monthly invoice requires no payment method."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_45"}},"schemaId":"schema_45","pointer":"/paths/~1api~1appointment/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/api/appointment","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_45"}},"responseCodes":["201","400","401","404"],"pointer":"/api/appointment","href":"appointments/paths/~1api~1appointment/post","summary":"Book an appointment"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"schemaId":"schema_45","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_45"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Appointment booked successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Appointment"}},"schemaId":"components/schemas/Appointment"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Invalid request — bad billing type, missing payment method, invalid address, or past appointment time."},"children":[]}]}]}]},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"},{"code":"404","description":"Patient or service not found."}],"pointer":"/paths/~1api~1appointment/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/Appointment","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Appointment"}}},{"code":"400"},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/paths/~1api~1appointment/post"}],"panels":[]}]},"httpPath":"/api/appointment"},{"label":"Get appointment by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointments/paths/~1api~1appointment~1{id}/get","routeSlug":"/openapi/appointments/paths/~1api~1appointment~1{id}/get","metadata":{"seo":{"title":"Get appointment by ID","description":"Retrieves a single appointment by ID. The appointment must belong to the authenticated client account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Get appointment by ID","isWebhook":false,"pointer":"/paths/~1api~1appointment~1{id}/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":"Retrieves a single appointment by ID. The appointment must belong to the authenticated client account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_41","description":"The appointment ID","required":true}],"pointer":"/paths/~1api~1appointment~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api/appointment/{id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_41"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/api/appointment/{id}","href":"appointments/paths/~1api~1appointment~1{id}/get","summary":"Get appointment by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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 retrieved successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Appointment"}},"schemaId":"components/schemas/Appointment"},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"},{"code":"404","description":"Appointment not found."}],"pointer":"/paths/~1api~1appointment~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Appointment","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Appointment"}}},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/paths/~1api~1appointment~1{id}/get"}],"panels":[]}]},"httpPath":"/api/appointment/{id}"},{"label":"Cancel an appointment","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointments/paths/~1api~1cancel-appointment/post","routeSlug":"/openapi/appointments/paths/~1api~1cancel-appointment/post","metadata":{"seo":{"title":"Cancel an appointment","description":"Cancels an existing appointment. The appointment must be in a Pending or Confirmed state and more than 3 hours away. A cancellation reason is required, and if the reason is \"Other\" a note must also be provided. A $50 cancellation fee applies."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Cancel an appointment","isWebhook":false,"pointer":"/paths/~1api~1cancel-appointment/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Cancel an appointment","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cancels an existing appointment. The appointment must be in a Pending or Confirmed state and more than 3 hours away. A cancellation reason is required, and if the reason is \"Other\" a note must also be provided. A $50 cancellation fee applies."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_46"}},"schemaId":"schema_46","pointer":"/paths/~1api~1cancel-appointment/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/api/cancel-appointment","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_46"}},"responseCodes":["200","400","401","404"],"pointer":"/api/cancel-appointment","href":"appointments/paths/~1api~1cancel-appointment/post","summary":"Cancel an appointment"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"schemaId":"schema_46","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_46"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Appointment cancelled successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_47"}},"schemaId":"schema_47"},{"code":"400","description":"Appointment cannot be cancelled (past, within 3 hours, or already cancelled/completed)."},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"},{"code":"404","description":"Appointment or cancellation reason not found."}],"pointer":"/paths/~1api~1cancel-appointment/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_47","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_47"}}},{"code":"400"},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/paths/~1api~1cancel-appointment/post"}],"panels":[]}]},"httpPath":"/api/cancel-appointment"},{"label":"Get cancellation reasons","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointments/paths/~1api~1cancellation-reasons/get","routeSlug":"/openapi/appointments/paths/~1api~1cancellation-reasons/get","metadata":{"seo":{"title":"Get cancellation reasons","description":"Returns a list of all available cancellation reasons to be used when cancelling an appointment."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Get cancellation reasons","isWebhook":false,"pointer":"/paths/~1api~1cancellation-reasons/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get cancellation reasons","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns a list of all available cancellation reasons to be used when cancelling an appointment."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api/cancellation-reasons","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401"],"pointer":"/api/cancellation-reasons","href":"appointments/paths/~1api~1cancellation-reasons/get","summary":"Get cancellation reasons"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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":"Cancellation reasons retrieved successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_48"}},"schemaId":"schema_48"},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"}],"pointer":"/paths/~1api~1cancellation-reasons/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_48","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_48"}}},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/paths/~1api~1cancellation-reasons/get"}],"panels":[]}]},"httpPath":"/api/cancellation-reasons"},{"label":"Get an appointment price estimate","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointments/getpricecheck","routeSlug":"/openapi/appointments/getpricecheck","metadata":{"seo":{"title":"Get an appointment price estimate","description":"Calculates an appointment price estimate based on the selected service, number of patients, location, requested date, and authenticated client account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getPriceCheck","name":"Get an appointment price estimate","isWebhook":false,"pointer":"/paths/~1api~1price-check/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get an appointment price estimate","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Calculates an appointment price estimate based on the selected service, number of patients, location, requested date, and authenticated client account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"serviceId","in":"query","schemaId":"schema_49","description":"ID of the requested service.","required":true,"example":1},{"name":"amountOfPeople","in":"query","schemaId":"schema_50","description":"Number of patients included in the appointment.","required":true,"example":2},{"name":"location","in":"query","schemaId":"schema_43","description":"Full appointment address, formatted as address, city, state, and ZIP code.","required":true,"example":"123 Main St, Phoenix, AZ, 85003"},{"name":"selectedDate","in":"query","schemaId":"schema_51","description":"Requested appointment date and time.","required":true,"example":"2026-08-24T14:00:00.000Z"}],"pointer":"/paths/~1api~1price-check/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api/price-check","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[{"name":"serviceId","in":"query","required":true,"example":1,"schemaId":"schema_49"},{"name":"amountOfPeople","in":"query","required":true,"example":2,"schemaId":"schema_50"},{"name":"location","in":"query","required":true,"example":"123 Main St, Phoenix, AZ, 85003","schemaId":"schema_43"},{"name":"selectedDate","in":"query","required":true,"example":"2026-08-24T14:00:00.000Z","schemaId":"schema_51"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","400","401","404","500"],"pointer":"/api/price-check","href":"appointments/getpricecheck","openApiOperationId":"getPriceCheck","summary":"Get an appointment price estimate"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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":"Price estimate calculated successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_52","exampleIds":["paths/~1api~1price-check/get/responses/200/content/application~1json/examples/standardEstimate","paths/~1api~1price-check/get/responses/200/content/application~1json/examples/accountFlatPrice"]}},"schemaId":"schema_52","exampleIds":["paths/~1api~1price-check/get/responses/200/content/application~1json/examples/standardEstimate","paths/~1api~1price-check/get/responses/200/content/application~1json/examples/accountFlatPrice"]},{"code":"400","description":"One or more required query parameters are missing or invalid."},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"},{"code":"404","description":"The requested service does not exist."},{"code":"500","description":"The selected date is in the past or pricing could not be calculated."}],"pointer":"/paths/~1api~1price-check/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_52","exampleIds":["paths/~1api~1price-check/get/responses/200/content/application~1json/examples/standardEstimate","paths/~1api~1price-check/get/responses/200/content/application~1json/examples/accountFlatPrice"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_52","exampleIds":["paths/~1api~1price-check/get/responses/200/content/application~1json/examples/standardEstimate","paths/~1api~1price-check/get/responses/200/content/application~1json/examples/accountFlatPrice"]}}},{"code":"400"},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}},{"code":"404"},{"code":"500"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/getpricecheck"}],"panels":[]}]},"httpPath":"/api/price-check"},{"label":"List appointment services","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/appointments/getservices","routeSlug":"/openapi/appointments/getservices","metadata":{"seo":{"title":"List appointment services","description":"Returns all services available for appointment booking and price estimates."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getServices","name":"List appointment services","isWebhook":false,"pointer":"/paths/~1api~1services/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"List appointment services","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns all services available for appointment booking and price estimates."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api/services","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","401"],"pointer":"/api/services","href":"appointments/getservices","openApiOperationId":"getServices","summary":"List appointment services"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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":"Services retrieved successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_53","exampleIds":["paths/~1api~1services/get/responses/200/content/application~1json/example"]}},"schemaId":"schema_53","exampleIds":["paths/~1api~1services/get/responses/200/content/application~1json/example"]},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"}],"pointer":"/paths/~1api~1services/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_53","exampleIds":["paths/~1api~1services/get/responses/200/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_53","exampleIds":["paths/~1api~1services/get/responses/200/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/appointments/getservices"}],"panels":[]}]},"httpPath":"/api/services"}],"content":{"contentType":"group","meta":{"name":"Appointments"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Appointments","showPageActions":true},{"nodeType":"markdoc","content":"View and manage appointments."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/api/appointment","summary":"List appointments","prefix":{"name":"get","color":"get"},"badges":[],"link":"/appointments/paths/~1api~1appointment/get","deprecated":false},{"title":"/api/appointment","summary":"Book an appointment","prefix":{"name":"post","color":"post"},"badges":[],"link":"/appointments/paths/~1api~1appointment/post","deprecated":false},{"title":"/api/appointment/{id}","summary":"Get appointment by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/appointments/paths/~1api~1appointment~1{id}/get","deprecated":false},{"title":"/api/cancel-appointment","summary":"Cancel an appointment","prefix":{"name":"post","color":"post"},"badges":[],"link":"/appointments/paths/~1api~1cancel-appointment/post","deprecated":false},{"title":"/api/cancellation-reasons","summary":"Get cancellation reasons","prefix":{"name":"get","color":"get"},"badges":[],"link":"/appointments/paths/~1api~1cancellation-reasons/get","deprecated":false},{"title":"/api/price-check","summary":"Get an appointment price estimate","prefix":{"name":"get","color":"get"},"badges":[],"link":"/appointments/getpricecheck","deprecated":false},{"title":"/api/services","summary":"List appointment services","prefix":{"name":"get","color":"get"},"badges":[],"link":"/appointments/getservices","deprecated":false}]}]}]}]}},{"type":"group","label":"Webhooks","link":"/openapi/webhooks","routeSlug":"/openapi/webhooks","items":[{"label":"Get webhook events","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/paths/~1api~1webhooks~1events/get","routeSlug":"/openapi/webhooks/paths/~1api~1webhooks~1events/get","metadata":{"seo":{"title":"Get webhook events","description":"Returns a list of all supported webhook event types available for subscription."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Get webhook events","isWebhook":false,"pointer":"/paths/~1api~1webhooks~1events/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get webhook events","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns a list of all supported webhook event types available for subscription."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api/webhooks/events","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/api/webhooks/events","href":"webhooks/paths/~1api~1webhooks~1events/get","summary":"Get webhook events"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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":"Events retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_54"}},"schemaId":"schema_54"}],"pointer":"/paths/~1api~1webhooks~1events/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_54","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_54"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/paths/~1api~1webhooks~1events/get"}],"panels":[]}]},"httpPath":"/api/webhooks/events"},{"label":"Get active webhooks","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/paths/~1api~1webhooks/get","routeSlug":"/openapi/webhooks/paths/~1api~1webhooks/get","metadata":{"seo":{"title":"Get active webhooks","description":"Returns a list of all active webhooks associated with your account."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Get active webhooks","isWebhook":false,"pointer":"/paths/~1api~1webhooks/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get active webhooks","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns a list of all active webhooks associated with your account."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api/webhooks","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/api/webhooks","href":"webhooks/paths/~1api~1webhooks/get","summary":"Get active webhooks"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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":"Webhooks returned successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_55"}},"schemaId":"schema_55"}],"pointer":"/paths/~1api~1webhooks/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_55","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_55"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/paths/~1api~1webhooks/get"}],"panels":[]}]},"httpPath":"/api/webhooks"},{"label":"Create a webhook","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/paths/~1api~1webhooks/post","routeSlug":"/openapi/webhooks/paths/~1api~1webhooks/post","metadata":{"seo":{"title":"Create a webhook","description":"Register a new webhook endpoint to receive real-time event notifications."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Create a webhook","isWebhook":false,"pointer":"/paths/~1api~1webhooks/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a webhook","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Register a new webhook endpoint to receive real-time event notifications."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_56"}},"schemaId":"schema_56","pointer":"/paths/~1api~1webhooks/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/api/webhooks","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_56"}},"responseCodes":["201","400"],"pointer":"/api/webhooks","href":"webhooks/paths/~1api~1webhooks/post","summary":"Create a webhook"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"schemaId":"schema_56","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_56"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Webhook created successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Webhook"}},"schemaId":"components/schemas/Webhook"},{"code":"400","description":"Invalid request body"}],"pointer":"/paths/~1api~1webhooks/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"components/schemas/Webhook","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Webhook"}}},{"code":"400"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/paths/~1api~1webhooks/post"}],"panels":[]}]},"httpPath":"/api/webhooks"},{"label":"Get webhook by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/paths/~1api~1webhooks~1{id}/get","routeSlug":"/openapi/webhooks/paths/~1api~1webhooks~1{id}/get","metadata":{"seo":{"title":"Get webhook by ID","description":"Retrieves a single webhook by ID."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Get webhook by ID","isWebhook":false,"pointer":"/paths/~1api~1webhooks~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get webhook by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieves a single webhook by ID."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_41","description":"Webhook ID","required":true}],"pointer":"/paths/~1api~1webhooks~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api/webhooks/{id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_41"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200"],"pointer":"/api/webhooks/{id}","href":"webhooks/paths/~1api~1webhooks~1{id}/get","summary":"Get webhook by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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 retrieved successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Webhook"}},"schemaId":"components/schemas/Webhook"}],"pointer":"/paths/~1api~1webhooks~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Webhook","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Webhook"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/paths/~1api~1webhooks~1{id}/get"}],"panels":[]}]},"httpPath":"/api/webhooks/{id}"},{"label":"Delete a webhook","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/paths/~1api~1webhooks~1{id}/delete","routeSlug":"/openapi/webhooks/paths/~1api~1webhooks~1{id}/delete","metadata":{"seo":{"title":"Delete a webhook","description":"Permanently removes a webhook by ID."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Delete a webhook","isWebhook":false,"pointer":"/paths/~1api~1webhooks~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete a webhook","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Permanently removes a webhook by ID."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_41","description":"Webhook ID","required":true}],"pointer":"/paths/~1api~1webhooks~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/api/webhooks/{id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_41"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","404"],"pointer":"/api/webhooks/{id}","href":"webhooks/paths/~1api~1webhooks~1{id}/delete","summary":"Delete a webhook"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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 deleted successfully"},{"code":"404","description":"Webhook not found"}],"pointer":"/paths/~1api~1webhooks~1{id}/delete/responses"}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/paths/~1api~1webhooks~1{id}/delete"}],"panels":[]}]},"httpPath":"/api/webhooks/{id}"},{"label":"Update a webhook","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/webhooks/paths/~1api~1webhooks~1{id}/patch","routeSlug":"/openapi/webhooks/paths/~1api~1webhooks~1{id}/patch","metadata":{"seo":{"title":"Update a webhook","description":"Update the URL or subscribed events for an existing webhook."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Update a webhook","isWebhook":false,"pointer":"/paths/~1api~1webhooks~1{id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update a webhook","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Update the URL or subscribed events for an existing webhook."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_41","description":"Webhook ID","required":true}],"pointer":"/paths/~1api~1webhooks~1{id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_57"}},"schemaId":"schema_57","pointer":"/paths/~1api~1webhooks~1{id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/api/webhooks/{id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_41"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_57"}},"responseCodes":["200","404"],"pointer":"/api/webhooks/{id}","href":"webhooks/paths/~1api~1webhooks~1{id}/patch","summary":"Update a webhook"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"schemaId":"schema_57","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_57"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Webhook updated successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Webhook"}},"schemaId":"components/schemas/Webhook"},{"code":"404","description":"Webhook not found"}],"pointer":"/paths/~1api~1webhooks~1{id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Webhook","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Webhook"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks/paths/~1api~1webhooks~1{id}/patch"}],"panels":[]}]},"httpPath":"/api/webhooks/{id}"}],"content":{"contentType":"group","meta":{"name":"Webhooks"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Webhooks","showPageActions":true},{"nodeType":"markdoc","content":"Receive real-time HTTP notifications when key events occur in your account. Register endpoint URLs and subscribe to specific events to keep your systems in sync automatically."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/api/webhooks/events","summary":"Get webhook events","prefix":{"name":"get","color":"get"},"badges":[],"link":"/webhooks/paths/~1api~1webhooks~1events/get","deprecated":false},{"title":"/api/webhooks","summary":"Get active webhooks","prefix":{"name":"get","color":"get"},"badges":[],"link":"/webhooks/paths/~1api~1webhooks/get","deprecated":false},{"title":"/api/webhooks","summary":"Create a webhook","prefix":{"name":"post","color":"post"},"badges":[],"link":"/webhooks/paths/~1api~1webhooks/post","deprecated":false},{"title":"/api/webhooks/{id}","summary":"Get webhook by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/webhooks/paths/~1api~1webhooks~1{id}/get","deprecated":false},{"title":"/api/webhooks/{id}","summary":"Delete a webhook","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/webhooks/paths/~1api~1webhooks~1{id}/delete","deprecated":false},{"title":"/api/webhooks/{id}","summary":"Update a webhook","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/webhooks/paths/~1api~1webhooks~1{id}/patch","deprecated":false}]}]}]}]}},{"type":"group","label":"Service Area","link":"/openapi/service-area","routeSlug":"/openapi/service-area","items":[{"label":"Check zip code serviceability","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/service-area/paths/~1api~1service-area~1check/get","routeSlug":"/openapi/service-area/paths/~1api~1service-area~1check/get","metadata":{"seo":{"title":"Check zip code serviceability","description":"Returns whether Speedy Sticks can service the provided zip code based on nearby phlebotomist availability."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Check zip code serviceability","isWebhook":false,"pointer":"/paths/~1api~1service-area~1check/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Check zip code serviceability","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Returns whether Speedy Sticks can service the provided zip code based on nearby phlebotomist availability."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"zip","in":"query","schemaId":"schema_58","description":"A valid 5-digit US zip code","required":true,"example":"10014"}],"pointer":"/paths/~1api~1service-area~1check/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/api/service-area/check","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[{"name":"zip","in":"query","required":true,"example":"10014","schemaId":"schema_58"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"responseCodes":["200","400","401"],"pointer":"/api/service-area/check","href":"service-area/paths/~1api~1service-area~1check/get","summary":"Check zip code serviceability"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","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":"Serviceability check completed.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_59"}},"schemaId":"schema_59"},{"code":"400","description":"Invalid or missing zip code."},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"}],"pointer":"/paths/~1api~1service-area~1check/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_59","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_59"}}},{"code":"400"},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/service-area/paths/~1api~1service-area~1check/get"}],"panels":[]}]},"httpPath":"/api/service-area/check"}],"content":{"contentType":"group","meta":{"name":"Service Area"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Service Area","showPageActions":true},{"nodeType":"markdoc","content":"Determine if we can service a provided area."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/api/service-area/check","summary":"Check zip code serviceability","prefix":{"name":"get","color":"get"},"badges":[],"link":"/service-area/paths/~1api~1service-area~1check/get","deprecated":false}]}]}]}]}},{"type":"group","label":"Payments","link":"/openapi/payments","routeSlug":"/openapi/payments","items":[{"label":"Create a stripe setup intent","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/payments/paths/~1api~1booking~1setup-intent/post","routeSlug":"/openapi/payments/paths/~1api~1booking~1setup-intent/post","metadata":{"seo":{"title":"Create a stripe setup intent","description":"Creates a Stripe SetupIntent for collecting a patient's card on file. Only required for bill-to-patient appointments. Returns a client secret and publishable key to initialize Stripe.js on the client side."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Create a stripe setup intent","isWebhook":false,"pointer":"/paths/~1api~1booking~1setup-intent/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a stripe setup intent","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Creates a Stripe SetupIntent for collecting a patient's card on file. Only required for bill-to-patient appointments. Returns a client secret and publishable key to initialize Stripe.js on the client side."},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuth","scopes":[],"type":"http","scheme":"bearer","bearerFormat":"JWT"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_60"}},"schemaId":"schema_60","pointer":"/paths/~1api~1booking~1setup-intent/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/api/booking/setup-intent","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_60"}},"responseCodes":["201","401","404"],"pointer":"/api/booking/setup-intent","href":"payments/paths/~1api~1booking~1setup-intent/post","summary":"Create a stripe setup intent"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"https://api.speedysticks.com","description":"Production"}],"schemaId":"schema_60","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_60"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Setup intent created successfully.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_61"}},"schemaId":"schema_61"},{"code":"401","description":"Unauthorized.","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}},"schemaId":"schema_35"},{"code":"404","description":"Patient not found."}],"pointer":"/paths/~1api~1booking~1setup-intent/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"201","schemaId":"schema_61","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_61"}}},{"code":"401","schemaId":"schema_35","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"schema_35"}}},{"code":"404"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/payments/paths/~1api~1booking~1setup-intent/post"}],"panels":[]}]},"httpPath":"/api/booking/setup-intent"}],"content":{"contentType":"group","meta":{"name":"Payments"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Payments","showPageActions":true},{"nodeType":"markdoc","content":"Manage patient payment methods and Stripe setup intents for bill-to-patient appointments."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/api/booking/setup-intent","summary":"Create a stripe setup intent","prefix":{"name":"post","color":"post"},"badges":[],"link":"/payments/paths/~1api~1booking~1setup-intent/post","deprecated":false}]}]}]}]}}],"store":{"schemaStore":{"components/schemas/AuthResponse":{"id":"components/schemas/AuthResponse","kind":"json-schema","title":"AuthResponse","data":{"type":"object","properties":{"token":{"type":"string","description":"JWT access token.","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."},"refreshToken":{"type":"string","description":"Token used to obtain a new access token.","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."},"streamToken":{"type":"string","description":"Token for stream-based services.","example":"st_live_abc123xyz"}}}},"components/schemas/Appointment":{"id":"components/schemas/Appointment","kind":"json-schema","title":"Appointment","data":{"type":"object","properties":{"id":{"type":"integer","example":1},"appointmentDateTime":{"type":"string","format":"date-time","example":"2024-01-15T09:00:00Z"},"appointmentTimeZone":{"type":"string","example":"America/New_York"},"price":{"type":"number","format":"decimal","example":150},"status":{"type":"string","enum":["Pending","In Progress","Completed","Canceled","Denied"],"example":"Pending"},"notes":{"type":["string","null"],"example":"Patient requested morning appointment"},"address":{"type":"string","example":"123 Main St"},"city":{"type":"string","example":"Phoenix"},"state":{"type":"string","example":"AZ"},"zip":{"type":"string","example":"85003"},"billingType":{"type":"string","enum":["Monthly Invoice","Bill to Patient","Bill to Account"],"example":"Bill to Patient"}}}},"components/schemas/Patient":{"id":"components/schemas/Patient","kind":"json-schema","title":"Patient","data":{"type":"object","properties":{"id":{"type":"integer","example":1},"firstName":{"type":"string","example":"Jane"},"lastName":{"type":"string","example":"Doe"},"dob":{"type":"string","format":"date","example":"1990-01-15"},"address":{"type":"string","example":"123 Main St"},"city":{"type":"string","example":"Phoenix"},"state":{"type":"string","example":"AZ"},"zip":{"type":"string","example":"85003"},"email":{"type":["string","null"],"format":"email","example":"jane.doe@example.com"},"phone":{"type":["string","null"],"example":"6025554567"},"gender":{"type":"string","enum":["Male","Female"],"example":"Female"},"externalId":{"type":["string","null"],"example":"ext_abc123"}}}},"components/schemas/CancellationReason":{"id":"components/schemas/CancellationReason","kind":"json-schema","title":"CancellationReason","data":{"type":"object","properties":{"id":{"type":"integer","example":1},"name":{"type":"string","example":"Scheduled by mistake"}}}},"components/schemas/Webhook":{"id":"components/schemas/Webhook","kind":"json-schema","title":"Webhook","data":{"type":"object","properties":{"id":{"type":"integer","example":1},"url":{"type":"string","example":"https://api.speedysticks.com/webhook-endpoint"},"events":{"type":"array","items":{"type":"string"},"example":["appointment.approved.v1","appointment.denied.v1"]}}}},"components/schemas/CostBreakdownItem":{"id":"components/schemas/CostBreakdownItem","kind":"json-schema","title":"CostBreakdownItem","data":{"type":"object","required":["title","amount"],"properties":{"title":{"type":"string","example":"Base Price (With Mileage)"},"amount":{"oneOf":[{"type":"number"},{"type":"string"}],"description":"Monetary amount. Some pricing branches return a numeric string.","example":"125.00"}}}},"components/schemas/PriceEstimate":{"id":"components/schemas/PriceEstimate","kind":"json-schema","title":"PriceEstimate","data":{"type":"object","required":["priceEstimate","costBreakdown"],"properties":{"priceEstimate":{"oneOf":[{"type":"number"},{"type":"string"}],"description":"Final estimated appointment price.","example":"150.00"},"serviceBasePrice":{"type":"number","description":"Base price of the requested service. Omitted for certain account-specific pricing results.","example":99},"costBreakdown":{"type":"array","items":{"$ref":"#/components/schemas/CostBreakdownItem"}}}}},"schema_31":{"kind":"json-schema","data":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email","example":"jane.doe@example.com"}}},"id":"schema_31"},"schema_32":{"kind":"json-schema","data":{"type":"object","required":["email","code"],"properties":{"email":{"type":"string","format":"email","example":"jane.doe@example.com"},"code":{"type":"string","example":"482910"}}},"id":"schema_32"},"schema_33":{"kind":"json-schema","data":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string","format":"email","example":"jane.doe@example.com"},"password":{"type":"string","format":"password","example":"supersecret123"}}},"id":"schema_33"},"schema_34":{"kind":"json-schema","data":{"type":"object","properties":{"message":{"type":"string","example":"Token generated successfully"},"token":{"type":"string","description":"JWT bearer token valid for 15 minutes","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"}}},"id":"schema_34"},"schema_35":{"kind":"json-schema","data":{"type":"object","properties":{"title":{"type":"string","example":"Unauthorized."}}},"id":"schema_35"},"schema_36":{"kind":"json-schema","data":{"type":"object","properties":{"key":{"type":"string","example":"sk_live_abc123xyz"},"analytics":{"type":"object","description":"Usage analytics associated with the key."}}},"id":"schema_36"},"schema_37":{"kind":"json-schema","data":{"type":"object","properties":{"key":{"type":"string","example":"sk_live_def456uvw"}}},"id":"schema_37"},"schema_38":{"kind":"json-schema","data":{"type":"object","required":["firstName","lastName","dob","address","city","state","zip","gender","email"],"properties":{"firstName":{"type":"string","example":"Jane"},"lastName":{"type":"string","example":"Doe"},"dob":{"type":"string","format":"date","example":"1990-01-15"},"address":{"type":"string","example":"123 Main St"},"city":{"type":"string","example":"Phoenix"},"state":{"type":"string","example":"AZ"},"zip":{"type":"string","example":"85003"},"email":{"type":"string","format":"email","example":"jane.doe@example.com"},"phone":{"type":"string","example":"6025554567"},"gender":{"type":"string","enum":["Male","Female"],"example":"Female"},"externalId":{"type":"string","example":"ext_abc123"}}},"id":"schema_38"},"schema_39":{"kind":"json-schema","data":{"type":"object","properties":{"patientId":{"type":"integer","example":1}}},"id":"schema_39"},"schema_40":{"kind":"json-schema","data":{"type":"object","properties":{"error":{"type":"string","example":"A patient with this external ID already exists."},"patientId":{"type":"integer","example":1}}},"id":"schema_40"},"schema_41":{"kind":"json-schema","data":{"type":"integer"},"id":"schema_41"},"schema_42":{"kind":"json-schema","data":{"type":"object","properties":{"firstName":{"type":"string","example":"Jane"},"lastName":{"type":"string","example":"Doe"},"dob":{"type":"string","format":"date","example":"1990-01-15"},"address":{"type":"string","example":"123 Main St"},"city":{"type":"string","example":"Phoenix"},"state":{"type":"string","example":"AZ"},"zip":{"type":"string","example":"85003"},"email":{"type":"string","format":"email","example":"jane.doe@example.com"},"phone":{"type":"string","example":"6025554567"},"gender":{"type":"string","enum":["Male","Female"],"example":"Female"}}},"id":"schema_42"},"schema_43":{"kind":"json-schema","data":{"type":"string"},"id":"schema_43"},"schema_44":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/Appointment"}},"id":"schema_44"},"schema_45":{"kind":"json-schema","data":{"type":"object","required":["address","city","state","zip","patientId","billingType","appointmentDateTime","serviceId"],"properties":{"address":{"type":"string","example":"123 Main St"},"city":{"type":"string","example":"Phoenix"},"state":{"type":"string","example":"AZ"},"zip":{"type":"string","example":"85003"},"patientId":{"type":"integer","example":1},"billingType":{"type":"string","enum":["Bill to Patient","Bill to Account","Monthly Invoice"],"example":"Bill to Patient"},"paymentMethod":{"type":"string","description":"Stripe payment method ID. Required when billingType is \"Bill to Patient\".","example":"pm_1TOn5vKR1SKMkoDmhkksYv2S"},"appointmentDateTime":{"type":"string","format":"date-time","example":"2026-04-29T16:00:00.000Z"},"serviceId":{"type":"integer","example":1},"notes":{"type":"string","example":"Patient prefers morning appointments."}}},"id":"schema_45"},"schema_46":{"kind":"json-schema","data":{"type":"object","required":["appointmentId","cancellationReasonId"],"properties":{"appointmentId":{"type":"integer","example":1},"cancellationReasonId":{"type":"integer","example":3},"note":{"type":"string","example":"Patient called to explain specific circumstances."}}},"id":"schema_46"},"schema_47":{"kind":"json-schema","data":{"type":"object","properties":{"message":{"type":"string","example":"Appointment canceled successfully"}}},"id":"schema_47"},"schema_48":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/CancellationReason"}},"id":"schema_48"},"schema_49":{"kind":"json-schema","data":{"oneOf":[{"type":"integer"},{"type":"string"}]},"id":"schema_49"},"schema_50":{"kind":"json-schema","data":{"oneOf":[{"type":"integer","minimum":1},{"type":"string"}]},"id":"schema_50"},"schema_51":{"kind":"json-schema","data":{"type":"string","format":"date-time"},"id":"schema_51"},"schema_52":{"kind":"json-schema","data":{"type":"object","required":["priceEstimate","costBreakdown"],"properties":{"priceEstimate":{"oneOf":[{"type":"number"},{"type":"string"}],"description":"Final estimated appointment price.","example":"150.00"},"serviceBasePrice":{"type":"number","description":"Base price of the requested service. This field may be omitted for account-specific flat pricing.","example":99},"costBreakdown":{"type":"array","description":"Individual charges included in the estimate.","items":{"type":"object","required":["title","amount"],"properties":{"title":{"type":"string","example":"Base Price (With Mileage)"},"amount":{"oneOf":[{"type":"number"},{"type":"string"}],"description":"Charge amount. Some pricing branches return a numeric string.","example":"125.00"}}}}}},"id":"schema_52"},"schema_53":{"kind":"json-schema","data":{"type":"array","items":{"type":"object","required":["id","serviceName","price"],"properties":{"id":{"type":"integer","description":"Unique service ID.","example":1},"serviceName":{"type":"string","description":"Display name of the service.","example":"Mobile Blood Draw"},"description":{"type":["string","null"],"description":"Description of the service.","example":"In-home specimen collection by a mobile phlebotomist."},"price":{"oneOf":[{"type":"number"},{"type":"string"}],"description":"Base price of the service.","example":"99.00"}}}},"id":"schema_53"},"schema_54":{"kind":"json-schema","data":{"type":"array","items":{"type":"string"},"example":["appointment.approved.v1","appointment.denied.v1","appointment.process.v1","appointment.completed.v1"]},"id":"schema_54"},"schema_55":{"kind":"json-schema","data":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}},"id":"schema_55"},"schema_56":{"kind":"json-schema","data":{"type":"object","required":["url","events"],"properties":{"url":{"type":"string","example":"https://webhook.site/624bbe8c-8939-4db0-952b-8590c7690dc9"},"events":{"type":"array","items":{"type":"string"},"example":["appointment.approved.v1","appointment.denied.v1"]}}},"id":"schema_56"},"schema_57":{"kind":"json-schema","data":{"type":"object","properties":{"url":{"type":"string","example":"https://webhook.site/624bbe8c-8939-4db0-952b-8590c7690dc9"},"events":{"type":"array","items":{"type":"string"},"example":["appointment.approved.v1","appointment.denied.v1"]}}},"id":"schema_57"},"schema_58":{"kind":"json-schema","data":{"type":"string","pattern":"^\\d{5}$"},"id":"schema_58"},"schema_59":{"kind":"json-schema","data":{"type":"object","properties":{"serviceable":{"type":"boolean","example":true},"message":{"type":"string","example":"We service this area"}}},"id":"schema_59"},"schema_60":{"kind":"json-schema","data":{"type":"object","required":["patientId"],"properties":{"patientId":{"type":"integer","example":1}}},"id":"schema_60"},"schema_61":{"kind":"json-schema","data":{"type":"object","properties":{"setupIntentSecret":{"type":"string","description":"The Stripe client secret used to initialize the payment element on the frontend.","example":"seti_1Jv3iK_secret_abc123"},"publishableKey":{"type":"string","description":"Your Stripe publishable key for initializing Stripe.js.","example":"pk_live_abc123"}}},"id":"schema_61"}},"exampleStore":{"paths/~1api~1price-check/get/responses/200/content/application~1json/examples/standardEstimate":{"value":{"priceEstimate":"150.00","serviceBasePrice":99,"costBreakdown":[{"title":"Base Price (With Mileage)","amount":"125.00"},{"title":"x1 Additional People","amount":25}]},"key":"standardEstimate","summary":"Standard estimate","id":"paths/~1api~1price-check/get/responses/200/content/application~1json/examples/standardEstimate"},"paths/~1api~1price-check/get/responses/200/content/application~1json/examples/accountFlatPrice":{"value":{"priceEstimate":85,"costBreakdown":[{"title":"Account Flat Price","amount":"85.00"}]},"key":"accountFlatPrice","summary":"Client account flat price","id":"paths/~1api~1price-check/get/responses/200/content/application~1json/examples/accountFlatPrice"},"paths/~1api~1services/get/responses/200/content/application~1json/example":{"value":[{"id":1,"serviceName":"Mobile Blood Draw","description":"In-home specimen collection by a mobile phlebotomist.","price":"99.00"},{"id":2,"serviceName":"Specimen Pickup","description":"Pickup and transportation of prepared specimens.","price":"75.00"}],"id":"paths/~1api~1services/get/responses/200/content/application~1json/example"}},"securitySchemeStore":{"BearerAuth":{"id":"BearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"},"ApiKeyAuth":{"id":"ApiKeyAuth","type":"apiKey","in":"header","paramName":"ApiKey"},"ApiOrBearerAuth":{"id":"ApiOrBearerAuth","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"servers":[{"url":"/_mock/openapi","isMockServer":true,"description":"Mock server"},{"url":"https://api.speedysticks.com","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":"Speedy Sticks API","description":"API for retrieving healthcare price estimates and managing client integrations."}},"baseSlug":"/openapi","routesMapping":{}}