{"openapi":"3.2.0","info":{"title":"Avail API","description":"Stateless appointment availability and scheduling slot calculation API.","version":"1.0.0"},"servers":[{"url":"https://ernwd.jojapi.net"}],"security":[{"ApiKeyAuth":[]}],"x-agent-commerce":{"catalog_url":"https://ernwd.jojapi.net/_jojapi/agent/plans","discovery_url":"https://ernwd.jojapi.net/.well-known/x402","directory_url":"https://agents.jojapi.net/apis/avail-schedule","docs":"https://docs.jojapi.com/consumers/agents"},"paths":{"/api/v1/availability":{"post":{"operationId":"post_api_v1_availability","summary":"Available Dates","description":"Calculates available appointment slots for a specified date based on operating hours, appointment duration, slot interval, buffer time, busy periods, blackout periods, and recurring weekly blackouts.\n\nAvail is stateless and does not create or store reservations. It evaluates the scheduling information provided in the request and returns the available appointment slots.","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"date":{"type":"string"},"timezone":{"type":"string"},"available_slots":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}}}}}},"examples":{"Success":{"value":{"status":"ok","date":"2026-09-21","timezone":"America/Chicago","available_slots":[{"start":"09:00","end":"10:00"},{"start":"09:30","end":"10:30"},{"start":"10:00","end":"11:00"},{"start":"10:30","end":"11:30"},{"start":"13:00","end":"14:00"},{"start":"13:30","end":"14:30"},{"start":"14:00","end":"15:00"},{"start":"14:30","end":"15:30"},{"start":"15:00","end":"16:00"},{"start":"15:30","end":"16:30"}]}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"date":{"type":"string"},"timezone":{"type":"string"},"available_slots":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}}}}}},"example":{"status":"ok","date":"2026-09-21","timezone":"America/Chicago","available_slots":[{"start":"09:00","end":"10:00"},{"start":"09:30","end":"10:30"},{"start":"10:00","end":"11:00"},{"start":"10:30","end":"11:30"},{"start":"13:00","end":"14:00"},{"start":"13:30","end":"14:30"},{"start":"14:00","end":"15:00"},{"start":"14:30","end":"15:30"},{"start":"15:00","end":"16:00"},{"start":"15:30","end":"16:30"}]}}}}}},"/api/v1/health":{"get":{"operationId":"get_api_v1_health","summary":"Health Check","description":"This endpoint is to check the health of the server.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"service":{"type":"string"}}},"examples":{"200":{"summary":"200","value":{"status":"ok","service":"avail-api"}}}}}}}}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-JoJAPI-Key","description":"Your JoJ API key."}}}}