{"openapi":"3.2.1","info":{"title":"LedgerFlow API Public API","version":"1.0.0","description":"Public gateway contract. Authentication uses X-API-Key. Individual plugin methods and paths are further restricted by each installed plugin manifest."},"servers":[{"url":"https://apistackr.com"}],"paths":{"/v1/plugin/{slug}/{path}":{"get":{"summary":"GET a configured API service","operationId":"plugin_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Installed API service plugin ID."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"Provider path allowed by the selected plugin."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"LedgerFlow API credential. Keys can be scoped to installed service IDs and can expire."},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":200},"description":"For retry-safe write requests. Reuse only for the same method, service, path, query, and JSON body."}],"responses":{"200":{"description":"Successful provider response wrapped with request_id, service, and data."},"400":{"description":"Invalid request or disallowed provider path."},"401":{"description":"Missing or invalid API key."},"403":{"description":"Request blocked by plugin policy."},"404":{"description":"Service is unavailable."},"429":{"description":"Rate limit or monthly allowance reached."},"502":{"description":"Upstream provider failed."}}},"post":{"summary":"POST a configured API service","operationId":"plugin_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Installed API service plugin ID."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"Provider path allowed by the selected plugin."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"LedgerFlow API credential. Keys can be scoped to installed service IDs and can expire."},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":200},"description":"For retry-safe write requests. Reuse only for the same method, service, path, query, and JSON body."}],"responses":{"200":{"description":"Successful provider response wrapped with request_id, service, and data."},"400":{"description":"Invalid request or disallowed provider path."},"401":{"description":"Missing or invalid API key."},"403":{"description":"Request blocked by plugin policy."},"404":{"description":"Service is unavailable."},"429":{"description":"Rate limit or monthly allowance reached."},"502":{"description":"Upstream provider failed."}}},"put":{"summary":"PUT a configured API service","operationId":"plugin_put","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Installed API service plugin ID."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"Provider path allowed by the selected plugin."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"LedgerFlow API credential. Keys can be scoped to installed service IDs and can expire."},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":200},"description":"For retry-safe write requests. Reuse only for the same method, service, path, query, and JSON body."}],"responses":{"200":{"description":"Successful provider response wrapped with request_id, service, and data."},"400":{"description":"Invalid request or disallowed provider path."},"401":{"description":"Missing or invalid API key."},"403":{"description":"Request blocked by plugin policy."},"404":{"description":"Service is unavailable."},"429":{"description":"Rate limit or monthly allowance reached."},"502":{"description":"Upstream provider failed."}}},"patch":{"summary":"PATCH a configured API service","operationId":"plugin_patch","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Installed API service plugin ID."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"Provider path allowed by the selected plugin."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"LedgerFlow API credential. Keys can be scoped to installed service IDs and can expire."},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":200},"description":"For retry-safe write requests. Reuse only for the same method, service, path, query, and JSON body."}],"responses":{"200":{"description":"Successful provider response wrapped with request_id, service, and data."},"400":{"description":"Invalid request or disallowed provider path."},"401":{"description":"Missing or invalid API key."},"403":{"description":"Request blocked by plugin policy."},"404":{"description":"Service is unavailable."},"429":{"description":"Rate limit or monthly allowance reached."},"502":{"description":"Upstream provider failed."}}},"delete":{"summary":"DELETE a configured API service","operationId":"plugin_delete","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Installed API service plugin ID."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"Provider path allowed by the selected plugin."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string"},"description":"LedgerFlow API credential. Keys can be scoped to installed service IDs and can expire."},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":200},"description":"For retry-safe write requests. Reuse only for the same method, service, path, query, and JSON body."}],"responses":{"200":{"description":"Successful provider response wrapped with request_id, service, and data."},"400":{"description":"Invalid request or disallowed provider path."},"401":{"description":"Missing or invalid API key."},"403":{"description":"Request blocked by plugin policy."},"404":{"description":"Service is unavailable."},"429":{"description":"Rate limit or monthly allowance reached."},"502":{"description":"Upstream provider failed."}}}}}}