{"openapi":"3.0.3","info":{"title":"Ji Labs API","version":"1.0.0","description":"Versioned public API for checking availability and starting a Ji Labs inquiry. Integrate with /api/v1 paths. Deprecated operations advertise a successor path and sunset date in response headers."},"externalDocs":{"description":"Ji Labs developer portal","url":"https://jilabs-ai.com/developers"},"tags":[{"name":"System","description":"Sandbox-safe service information."},{"name":"Inquiries","description":"Start a conversation with Ji Labs about a business workflow."}],"paths":{"/api/v1":{"get":{"operationId":"getApiIndex","tags":["System"],"summary":"Discover version 1 resources","description":"Returns links to the stable version 1 health and inquiry operations.","responses":{"200":{"description":"Versioned API index","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiIndexResponse"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/v1/health":{"get":{"operationId":"getApiHealth","tags":["System"],"summary":"Check API availability","description":"A sandbox-safe request that does not create or modify data.","responses":{"200":{"description":"API availability and documentation links","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/v1/inquiry":{"post":{"operationId":"createInquiry","tags":["Inquiries"],"summary":"Submit an inquiry","description":"Submit the minimum business contact details needed to start a Ji Labs conversation. Do not send passwords, API keys, or sensitive credentials.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InquiryRequest"}}}},"responses":{"200":{"description":"Inquiry accepted","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InquiryResponse"}}}},"400":{"description":"Missing required fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/inquiry":{"post":{"operationId":"createInquiryLegacy","tags":["Inquiries"],"summary":"Submit an inquiry using the deprecated unversioned path","description":"Compatibility path for older website clients. New integrations must use /api/v1/inquiry.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InquiryRequest"}}}},"responses":{"200":{"description":"Inquiry accepted; migrate to /api/v1/inquiry before the sunset date","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Sunset":{"$ref":"#/components/headers/Sunset"},"Link":{"$ref":"#/components/headers/SuccessorLink"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InquiryResponse"}}}},"400":{"description":"Missing required fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}}},"components":{"headers":{"RateLimitLimit":{"description":"Maximum requests allowed in the current window.","schema":{"type":"integer","minimum":1}},"RateLimitRemaining":{"description":"Requests remaining in the current window.","schema":{"type":"integer","minimum":0}},"RateLimitReset":{"description":"Seconds until the current rate-limit window resets.","schema":{"type":"integer","minimum":0}},"Deprecation":{"description":"Signals that the operation is deprecated.","schema":{"type":"string","example":"true"}},"Sunset":{"description":"HTTP date after which the deprecated operation may be removed.","schema":{"type":"string","example":"Thu, 01 Jul 2027 00:00:00 GMT"}},"SuccessorLink":{"description":"Link to the supported successor operation.","schema":{"type":"string","example":"</api/v1/inquiry>; rel=\"successor-version\""}}},"responses":{"RateLimited":{"description":"Request limit exceeded","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ApiIndexResponse":{"type":"object","additionalProperties":false,"required":["name","version","documentation","openapi","health","inquiry"],"properties":{"name":{"type":"string","enum":["Ji Labs API"]},"version":{"type":"string","enum":["v1"]},"documentation":{"type":"string","format":"uri-reference"},"openapi":{"type":"string","format":"uri-reference"},"health":{"type":"string","format":"uri-reference"},"inquiry":{"type":"string","format":"uri-reference"}}},"HealthResponse":{"type":"object","additionalProperties":false,"required":["status","service","version","documentation"],"properties":{"status":{"type":"string","enum":["ok"]},"service":{"type":"string","enum":["Ji Labs API"]},"version":{"type":"string","enum":["v1"]},"documentation":{"type":"string","format":"uri-reference"}}},"InquiryRequest":{"type":"object","additionalProperties":false,"required":["name","companyName","email","inquiry"],"properties":{"name":{"type":"string","minLength":1,"maxLength":120,"description":"Name of the person Ji Labs should address."},"companyName":{"type":"string","minLength":1,"maxLength":160,"description":"Company or team name."},"email":{"type":"string","format":"email","maxLength":254,"description":"Reply address for the inquiry."},"whatsapp":{"type":"string","nullable":true,"maxLength":40,"description":"Optional WhatsApp number."},"inquiry":{"type":"string","minLength":1,"maxLength":5000,"description":"Workflow, problem, or outcome to discuss."}}},"InquiryResponse":{"type":"object","additionalProperties":false,"required":["message","id"],"properties":{"message":{"type":"string","description":"Human-readable acceptance message."},"id":{"type":"string","description":"Identifier for this inquiry submission."}}},"ErrorResponse":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","resolution"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Concise explanation of the failure."},"resolution":{"type":"string","description":"Action the caller can take next."}}}}}}}}