{"schemaVersion":"taiega-integration/v1","apiVersion":"v1","apiOrigin":"https://taiega-api.vercel.app","documentation":"https://taiega-api.vercel.app/","discovery":"https://taiega-api.vercel.app/.well-known/taiega-integration","ownership":{"schedule":"Taiega","customerRecords":"Integrating application","credentials":"One Taiega organization, environment, and server workload"},"authentication":{"scheme":"taiega-hmac-v1","transport":"HTTPS","headers":["x-taiega-client-id","x-taiega-timestamp","x-taiega-nonce","x-taiega-signature"],"maximumClockSkewSeconds":300,"nonce":"A fresh URL-safe value for every HTTP attempt","browserSecretsAllowed":false},"credentialPolicy":{"managedCredentialsPreferred":true,"separateByEnvironment":true,"separateByServerWorkload":true,"oneTimeSecretDisplay":true,"minimumSecretBits":256,"overlapRotation":true,"recommendedRotationDays":90,"immediateRevocationSupported":true,"wildcardScopesAllowed":false},"accessProfiles":[{"name":"basic-scheduling","availability":"included","scopes":["availability:read","booking:read","booking:write"],"purpose":"Core scheduling integration without a commercial dependency"},{"name":"scheduling-lifecycle","availability":"admin-granted","scopes":["availability:read","booking:read","booking:write","booking:reschedule","booking:cancel"],"purpose":"Full booking lifecycle"}],"scopes":[{"name":"availability:read","purpose":"Discover the configured catalog and available appointment times"},{"name":"booking:read","purpose":"Read individual bookings and the organization agenda"},{"name":"booking:write","purpose":"Create bookings"},{"name":"booking:reschedule","purpose":"Reschedule bookings"},{"name":"booking:cancel","purpose":"Cancel bookings"}],"endpoints":[{"method":"GET","path":"/api/health","authentication":"none","purpose":"Runtime readiness without tenant or credential details"},{"method":"GET","path":"/api/v1/catalog","scope":"availability:read","purpose":"Discover configured offerings"},{"method":"GET","path":"/api/v1/availability","scope":"availability:read","purpose":"Read live availability"},{"method":"POST","path":"/api/v1/bookings","scope":"booking:write","purpose":"Create an idempotent booking"},{"method":"GET","path":"/api/v1/bookings/{reference}","scope":"booking:read","purpose":"Read one booking"},{"method":"POST","path":"/api/v1/bookings/{reference}/reschedule","scope":"booking:reschedule","purpose":"Reschedule with sequence control"},{"method":"POST","path":"/api/v1/bookings/{reference}/cancel","scope":"booking:cancel","purpose":"Cancel with sequence control"}],"reliability":{"mutationHeader":"Idempotency-Key","persistBeforeSend":true,"retryRule":"Retry the same logical input and idempotency key with a fresh timestamp, nonce, and signature","webhookDelivery":"at-least-once","webhookReceiverRule":"Verify the raw-body signature, deduplicate event IDs, and apply sequence numbers monotonically"},"rollout":["Create or select one Taiega organization for the integration","Confirm that a server API is required; hosted Taiega booking pages do not need a signing key","Configure locations, services, resources, and real availability","Issue a managed credential for one environment and server workload with minimum scopes","Store the client identifier and signing secret in the consumer's server-side secret manager","Verify health, catalog, and availability before enabling booking writes","Exercise idempotent create, recovery, reschedule, cancellation, revocation, and webhook replay in a non-production organization","Enable production writes and monitor request IDs, webhook delivery, credential age, and last use","Rotate by adding a replacement, deploying both sides, verifying use, and revoking the old credential"]}