{"openapi":"3.1.0","info":{"title":"Custom API","version":"1.0.0"},"paths":{"/":{"get":{"tags":["Root"],"summary":"Read Root","operationId":"read_root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["Health"],"summary":"Health Check","description":"Simple health check endpoint, supports GET and HEAD methods","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"tags":["Health"],"summary":"Health Check","description":"Simple health check endpoint, supports GET and HEAD methods","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/auth/create":{"post":{"tags":["API Key Management","API Key Management"],"summary":"Create an API key","description":"Create an API key.","operationId":"create_api_key_v1_auth_create_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"API key name"},"enabled_modules":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enabled Modules","description":"Enabled feature modules"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"Expiration time"}},"type":"object","required":["name"],"title":"CreateAPIKeyRequest","description":"Request payload for creating an API key."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/auth/list":{"get":{"tags":["API Key Management","API Key Management"],"summary":"List API keys","description":"List API keys for the current user.","operationId":"list_api_keys_v1_auth_list_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/auth/revoke":{"post":{"tags":["API Key Management","API Key Management"],"summary":"Revoke an API key","description":"Revoke an API key.","operationId":"revoke_api_key_v1_auth_revoke_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"api_key_id":{"type":"string","title":"Api Key Id","description":"API key ID to revoke"}},"type":"object","required":["api_key_id"],"title":"RevokeAPIKeyRequest","description":"Request payload for revoking an API key."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/auth/{api_key_id}":{"get":{"tags":["API Key Management","API Key Management"],"summary":"Get API key details","description":"Get details for a single API key.","operationId":"get_api_key_v1_auth__api_key_id__get","parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","title":"Api Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/auth/{api_key_id}/toggle":{"put":{"tags":["API Key Management","API Key Management"],"summary":"Enable or disable an API key","description":"Enable or disable an API key.","operationId":"toggle_api_key_v1_auth__api_key_id__toggle_put","parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","title":"Api Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/guest":{"post":{"tags":["Guest Registration"],"summary":"Register guest device","description":"Register a guest device and return an API key.\n\nIf the device_id is already registered, the endpoint returns a conflict\ninstead of rotating the existing guest API key.","operationId":"register_guest_v1_guest_post","requestBody":{"content":{"application/json":{"schema":{"properties":{"device_id":{"type":"string","maxLength":255,"minLength":1,"title":"Device Id","description":"Stable client device identifier"},"client":{"type":"string","maxLength":64,"minLength":1,"title":"Client","description":"Client application name, e.g. knowhere-hub"},"platform":{"type":"string","maxLength":64,"minLength":1,"title":"Platform","description":"Operating system, e.g. macos"},"app_version":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"App Version","description":"Client application version"}},"type":"object","required":["device_id","client","platform"],"title":"GuestRegisterRequest","description":"Register a guest device."}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"guest_user_id":{"type":"string","title":"Guest User Id"},"device_id":{"type":"string","title":"Device Id"},"api_key":{"type":"string","title":"Api Key","description":"Plaintext API key (sk_...), issued on first registration"},"rate_limit":{"properties":{"rpm":{"type":"integer","title":"Rpm","description":"Requests per minute (-1 = unlimited)"},"daily_quota":{"type":"integer","title":"Daily Quota","description":"Requests per day (-1 = unlimited)"},"max_concurrent_jobs":{"type":"integer","title":"Max Concurrent Jobs","description":"Maximum concurrent jobs"}},"type":"object","required":["rpm","daily_quota","max_concurrent_jobs"],"title":"GuestRateLimitInfo","description":"Rate limit metadata returned with guest registration."},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"API key expiry timestamp, or null for non-expiring guest keys"}},"type":"object","required":["guest_user_id","device_id","api_key","rate_limit","expires_at"],"title":"GuestRegisterResponse","description":"Response for guest device registration."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/billing/buy-credits":{"post":{"tags":["Billing","Billing"],"summary":"Buy Credits","operationId":"buy_credits_v1_billing_buy_credits_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"credits_amount":{"type":"integer","exclusiveMinimum":0.0,"title":"Credits Amount","description":"Credits amount to purchase"},"payment_method_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method Id","description":"Payment method ID"}},"type":"object","required":["credits_amount"],"title":"BuyCreditsRequest","description":"Request payload for purchasing credits directly."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"client_secret":{"type":"string","title":"Client Secret"},"payment_intent_id":{"type":"string","title":"Payment Intent Id"}},"type":"object","required":["client_secret","payment_intent_id"],"title":"PaymentIntentResponse","description":"Payment-intent response."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/billing/credits":{"get":{"tags":["Billing","Billing"],"summary":"Get Credits Balance","operationId":"get_credits_balance_v1_billing_credits_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"credits_balance":{"type":"number","title":"Credits Balance"}},"type":"object","required":["credits_balance"],"title":"CreditsBalanceResponse","description":"Credits-balance response."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/billing/usage":{"get":{"tags":["Billing","Billing"],"summary":"Get Usage Statistics","operationId":"get_usage_stats_v1_billing_usage_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"month","title":"Period"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"period":{"type":"string","title":"Period"},"total_credits_used":{"type":"number","title":"Total Credits Used"},"api_calls_count":{"type":"integer","title":"Api Calls Count"},"success_rate":{"type":"number","title":"Success Rate"},"average_response_time":{"type":"number","title":"Average Response Time"},"top_endpoints":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Endpoints"}},"type":"object","required":["period","total_credits_used","api_calls_count","success_rate","average_response_time","top_endpoints"],"title":"UsageStatsResponse","description":"Usage-statistics response."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/billing/parse-usage":{"get":{"tags":["Billing","Billing"],"summary":"Get Parse Usage Overview","operationId":"parse_usage_overview_v1_billing_parse_usage_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"request_total":{"type":"integer","title":"Request Total"},"mom_growth":{"type":"number","title":"Mom Growth"},"credits_used":{"type":"number","title":"Credits Used"},"estimated_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Amount"},"success_rate":{"type":"number","title":"Success Rate"},"avg_processing_time":{"type":"number","title":"Avg Processing Time"}},"type":"object","required":["request_total","mom_growth","credits_used","estimated_amount","success_rate","avg_processing_time"],"title":"ParseUsageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/billing/history":{"get":{"tags":["Billing","Billing"],"summary":"Get Transaction History","operationId":"get_transaction_history_v1_billing_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/billing/price-configs":{"get":{"tags":["Billing","Billing"],"summary":"Get Price Configurations","operationId":"get_price_configs_v1_billing_price_configs_get","parameters":[{"name":"product_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Product type: subscription or credits_package","title":"Product Type"},"description":"Product type: subscription or credits_package"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","additionalProperties":true}},"title":"Response Get Price Configs V1 Billing Price Configs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/billing/buy-credits-package":{"post":{"tags":["Billing","Billing"],"summary":"Buy Credits Package by Price ID","operationId":"buy_credits_package_v1_billing_buy_credits_package_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"price_id":{"type":"string","title":"Price Id","description":"Stripe price ID"},"quantity":{"type":"integer","exclusiveMinimum":0.0,"title":"Quantity","description":"Quantity to purchase","default":1}},"type":"object","required":["price_id"],"title":"BuyCreditsPackageRequest","description":"Request payload for purchasing a credits package by price ID."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"checkout_url":{"type":"string","title":"Checkout Url"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["checkout_url","session_id"],"title":"CheckoutSessionResponse","description":"Checkout-session response."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/billing/webhook":{"post":{"tags":["Billing","Billing"],"summary":"Stripe Webhook","operationId":"stripe_webhook_v1_billing_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/jobs":{"post":{"tags":["Jobs","Jobs"],"summary":"Create a parsing job","description":"Create a parsing job.","operationId":"create_job_v1_jobs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"namespace":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Namespace","description":"Retrieval namespace; defaults to default"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id","description":"Existing document ID for update flows"},"source_type":{"type":"string","enum":["file","url"],"title":"Source Type","description":"Document source type"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url","description":"Source URL; required when source_type=url"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name","description":"File name; required when source_type=file and must include the extension"},"data_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Data Id","description":"User-defined ID"},"parsing_params":{"anyOf":[{"properties":{"model":{"type":"string","enum":["base","advanced"],"title":"Model","description":"Parsing model","default":"base"},"ocr_enabled":{"type":"boolean","title":"Ocr Enabled","description":"Enable OCR","default":false},"doc_type":{"type":"string","enum":["auto","pdf","docx","txt","md"],"title":"Doc Type","description":"Document type","default":"auto"},"smart_title_parse":{"type":"boolean","title":"Smart Title Parse","description":"Enable smart heading parsing","default":true},"summary_image":{"type":"boolean","title":"Summary Image","description":"Generate image summaries","default":true},"summary_table":{"type":"boolean","title":"Summary Table","description":"Generate table summaries","default":true},"summary_txt":{"type":"boolean","title":"Summary Txt","description":"Generate text summaries","default":true},"add_frag_desc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Add Frag Desc","description":"Additional fragment description","default":""},"summary_use_llm":{"type":"boolean","title":"Summary Use Llm","description":"Use LLM to generate coherent hierarchical section summaries. When True, intermediate (non-leaf) sections get a real semantic summary instead of a plain title enumeration. Increases parse time and API token cost.","default":false},"top_summary_use_llm":{"type":"boolean","title":"Top Summary Use Llm","description":"Use LLM for the document-level top_summary written to doc_nav. Defaults to True because agentic document selection consumes this field. Section-level summaries remain controlled by summary_use_llm.","default":true}},"type":"object","title":"ParsingParams","description":"Parsing parameters."},{"type":"null"}],"description":"Parsing parameters"},"document_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Document Metadata","description":"Display metadata copied to the published document, such as created_by_client and client_version."},"webhook":{"anyOf":[{"properties":{"url":{"type":"string","title":"Url","description":"Webhook callback URL"}},"type":"object","required":["url"],"title":"WebhookConfig","description":"Webhook configuration."},{"type":"null"}],"description":"Webhook configuration"}},"additionalProperties":false,"type":"object","required":["source_type"],"title":"JobCreate","description":"Public v1 request payload for creating a job."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace","description":"Effective namespace"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id","description":"Linked document ID"},"status":{"type":"string","enum":["pending","waiting-file","running","converting","done","failed"],"title":"Status","description":"Job status"},"source_type":{"type":"string","title":"Source Type","description":"Document source type"},"data_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Id","description":"User-defined ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation time"},"upload_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upload Url","description":"Upload URL"},"upload_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Upload Headers","description":"Upload request headers"},"expires_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In","description":"URL expiration in seconds"}},"type":"object","required":["job_id","status","source_type","created_at"],"title":"JobResponse","description":"Job-creation response."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}},"get":{"tags":["Jobs","Jobs"],"summary":"List jobs","description":"List jobs for the current user.","operationId":"list_jobs_v1_jobs_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Items per page","default":20,"title":"Page Size"},"description":"Items per page"},{"name":"job_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Status filter","title":"Job Status"},"description":"Status filter"},{"name":"job_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Job type filter","title":"Job Type"},"description":"Job type filter"},{"name":"recent_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Recent-day filter; supported values are 1, 7, and 30","enum":[1,7,30],"title":"Recent Days"},"description":"Recent-day filter; supported values are 1, 7, and 30"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Start time in ISO format","title":"Start Time"},"description":"Start time in ISO format"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"End time in ISO format","title":"End Time"},"description":"End time in ISO format"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"jobs":{"items":{"properties":{"job_result_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Result Id","description":"Immutable completed publication revision, when available"},"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace","description":"Effective retrieval namespace"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id","description":"Linked document ID"},"status":{"type":"string","enum":["pending","waiting-file","running","converting","done","failed"],"title":"Status","description":"Job status"},"source_type":{"type":"string","title":"Source Type","description":"File source type"},"data_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Id","description":"User-defined ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation time"},"progress":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Progress","description":"Progress information"},"error":{"anyOf":[{"properties":{"code":{"type":"string","title":"Code","description":"Canonical error code (e.g., INVALID_ARGUMENT, INTERNAL_ERROR)"},"message":{"type":"string","title":"Message","description":"Human-readable error message"},"request_id":{"type":"string","title":"Request Id","description":"Original request ID for tracing"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details (violations, retry_after, etc.)"}},"type":"object","required":["code","message","request_id"],"title":"StandardErrorObject","description":"Standard error object for embedded error pattern.\n\nReuses the same structure as synchronous API errors,\nenabling clients to use the same error handling logic\nfor both sync and async (job) errors."},{"type":"null"}],"description":"Error information (only when status=failed)"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result","description":"Parsing result (contains checksum and statistics)"},"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url","description":"Result file URL (ZIP download link)"},"result_url_expires_at":{"type":"string","format":"date-time","title":"Result Url Expires At","description":"Result URL expiration time"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name","description":"Source file name"},"file_extension":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Extension","description":"File extension, uppercase"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Parsing model used"},"ocr_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ocr Enabled","description":"Whether OCR is enabled"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds","description":"Job duration (updated_at - created_at, in seconds)"},"credits_spent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credits Spent","description":"Credits consumed"}},"type":"object","required":["job_id","status","source_type","created_at","result_url_expires_at"],"title":"JobResultResponse","description":"Job status query response (for GET /jobs/{job_id}/result)"},"type":"array","title":"Jobs","description":"Job list"},"total":{"type":"integer","title":"Total","description":"Total item count"},"page":{"type":"integer","title":"Page","description":"Current page number"},"page_size":{"type":"integer","title":"Page Size","description":"Items per page"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total page count"}},"type":"object","required":["jobs","total","page","page_size","total_pages"],"title":"JobList","description":"Paginated job-list response."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}":{"get":{"tags":["Jobs","Jobs"],"summary":"Get a job result","description":"Return the result payload for one job.","operationId":"get_job_result_v1_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"job_result_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Result Id","description":"Immutable completed publication revision, when available"},"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace","description":"Effective retrieval namespace"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id","description":"Linked document ID"},"status":{"type":"string","enum":["pending","waiting-file","running","converting","done","failed"],"title":"Status","description":"Job status"},"source_type":{"type":"string","title":"Source Type","description":"File source type"},"data_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Id","description":"User-defined ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation time"},"progress":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Progress","description":"Progress information"},"error":{"anyOf":[{"properties":{"code":{"type":"string","title":"Code","description":"Canonical error code (e.g., INVALID_ARGUMENT, INTERNAL_ERROR)"},"message":{"type":"string","title":"Message","description":"Human-readable error message"},"request_id":{"type":"string","title":"Request Id","description":"Original request ID for tracing"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details (violations, retry_after, etc.)"}},"type":"object","required":["code","message","request_id"],"title":"StandardErrorObject","description":"Standard error object for embedded error pattern.\n\nReuses the same structure as synchronous API errors,\nenabling clients to use the same error handling logic\nfor both sync and async (job) errors."},{"type":"null"}],"description":"Error information (only when status=failed)"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result","description":"Parsing result (contains checksum and statistics)"},"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url","description":"Result file URL (ZIP download link)"},"result_url_expires_at":{"type":"string","format":"date-time","title":"Result Url Expires At","description":"Result URL expiration time"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name","description":"Source file name"},"file_extension":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Extension","description":"File extension, uppercase"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Parsing model used"},"ocr_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ocr Enabled","description":"Whether OCR is enabled"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds","description":"Job duration (updated_at - created_at, in seconds)"},"credits_spent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credits Spent","description":"Credits consumed"}},"type":"object","required":["job_id","status","source_type","created_at","result_url_expires_at"],"title":"JobResultResponse","description":"Job status query response (for GET /jobs/{job_id}/result)"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}},"delete":{"tags":["Jobs","Jobs"],"summary":"Reject deletion of retained demo revisions","operationId":"delete_job_v1_jobs__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/confirm-upload":{"post":{"tags":["Jobs","Jobs"],"summary":"Confirm file upload","description":"Confirm a completed file upload as a fallback path.","operationId":"confirm_upload_v1_jobs__job_id__confirm_upload_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"properties":{},"type":"object","title":"ConfirmUploadRequest","description":"Request payload for confirming a file upload."},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Confirm Upload V1 Jobs  Job Id  Confirm Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}/upload-url":{"post":{"tags":["Jobs","Jobs"],"summary":"Renew a waiting job upload URL","operationId":"renew_upload_url_v1_jobs__job_id__upload_url_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/demo/catalog":{"get":{"tags":["Demo Documents","Demo Documents"],"summary":"Get Demo Catalog","operationId":"get_demo_catalog_v1_demo_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Demo Catalog V1 Demo Catalog Get"}}}}}}},"/v1/demo/sources/{demo_source_id}/chunks":{"get":{"tags":["Demo Documents","Demo Documents"],"summary":"List Demo Source Chunks","operationId":"list_demo_source_chunks_v1_demo_sources__demo_source_id__chunks_get","parameters":[{"name":"demo_source_id","in":"path","required":true,"schema":{"type":"string","title":"Demo Source Id"}},{"name":"job_result_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Job Result Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Response List Demo Source Chunks V1 Demo Sources  Demo Source Id  Chunks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/demo/sources/{demo_source_id}/chunks/{demo_chunk_id}":{"get":{"tags":["Demo Documents","Demo Documents"],"summary":"Get Demo Source Chunk","operationId":"get_demo_source_chunk_v1_demo_sources__demo_source_id__chunks__demo_chunk_id__get","parameters":[{"name":"demo_source_id","in":"path","required":true,"schema":{"type":"string","title":"Demo Source Id"}},{"name":"demo_chunk_id","in":"path","required":true,"schema":{"type":"string","title":"Demo Chunk Id"}},{"name":"job_result_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Job Result Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Response Get Demo Source Chunk V1 Demo Sources  Demo Source Id  Chunks  Demo Chunk Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/demo/sources/{demo_source_id}/original":{"get":{"tags":["Demo Documents","Demo Documents"],"summary":"Get Demo Source Original","operationId":"get_demo_source_original_v1_demo_sources__demo_source_id__original_get","parameters":[{"name":"demo_source_id","in":"path","required":true,"schema":{"type":"string","title":"Demo Source Id"}},{"name":"job_result_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Job Result Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/demo/sources/{demo_source_id}/assets/{asset_path}":{"get":{"tags":["Demo Documents","Demo Documents"],"summary":"Get Demo Source Asset","operationId":"get_demo_source_asset_v1_demo_sources__demo_source_id__assets__asset_path__get","parameters":[{"name":"demo_source_id","in":"path","required":true,"schema":{"type":"string","title":"Demo Source Id"}},{"name":"asset_path","in":"path","required":true,"schema":{"type":"string","title":"Asset Path"}},{"name":"job_result_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Job Result Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/demo/materializations":{"post":{"tags":["Demo Documents","Demo Documents"],"summary":"Materialize Demo Sources","operationId":"materialize_demo_sources_v1_demo_materializations_post","responses":{"410":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/retrieval/query":{"post":{"tags":["Retrieval","Retrieval"],"summary":"Query Retrieval","operationId":"query_retrieval_v1_retrieval_query_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"namespace":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Namespace","description":"Effective namespace; defaults to default"},"query":{"type":"string","title":"Query"},"top_k":{"type":"integer","title":"Top K","default":10},"include_document_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Include Document Ids","description":"Document allowlist: null means unrestricted, [] means empty; exclusions win."},"exclude_document_ids":{"items":{"type":"string"},"type":"array","title":"Exclude Document Ids","description":"Documents excluded from every retrieval path. Exclusions override include_document_ids."},"exclude_sections":{"items":{"properties":{"document_id":{"type":"string","title":"Document Id"},"section_path":{"type":"string","title":"Section Path"}},"type":"object","required":["document_id","section_path"],"title":"ExcludeSection"},"type":"array","title":"Exclude Sections"},"data_type":{"type":"integer","maximum":8.0,"minimum":1.0,"title":"Data Type","description":"Chunk type filter: 1=all, 2=text, 3=image, 4=table, 5=text+image, 6=text+table, 7=page, 8=text+image+table","default":1,"deprecated":true},"chunk_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Chunk Types","description":"Allowed chunk types for retrieval. Options: text, image, table, page. None or empty means all types. Overrides data_type if provided."},"signal_paths":{"items":{"type":"string"},"type":"array","title":"Signal Paths","description":"Path keywords for include/exclude filtering"},"filter_mode":{"type":"string","enum":["delete","keep"],"title":"Filter Mode","description":"Signal path filter mode","default":"delete"},"rerank":{"type":"boolean","title":"Rerank","description":"Enable LLM reranking after RRF fusion","default":false},"threshold":{"type":"number","minimum":0.0,"title":"Threshold","description":"Minimum RRF score threshold","default":0.0},"internal_recall_k":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Internal Recall K","description":"Override per-channel recall count"},"use_agentic":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Agentic","description":"Turns agent retrieval on or off. False uses classic map-unit BM25. Unset or true turns agent retrieval on; AGENT_EXPLORE_HARNESS then selects Cursor (cursor_sdk) or Knowhere's own harness (openai)."},"agent_explore_model":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Agent Explore Model","description":"Optional Cursor model when agent retrieval is on and AGENT_EXPLORE_HARNESS=cursor_sdk. Omit or leave empty to use AGENT_EXPLORE_CURSOR_MODEL (default composer-2.5). Ignored when agent retrieval is off or the harness is openai."},"conversation_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Conversation Id","description":"Caller-supplied conversation identifier, threaded through for retrieval tracing. Does not affect caching or result content."}},"type":"object","required":["query"],"title":"RetrievalQueryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"namespace":{"type":"string","title":"Namespace"},"query":{"type":"string","title":"Query"},"router_used":{"type":"string","title":"Router Used"},"evidence":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Evidence","description":"Grouped evidence blocks. Each group starts with [E1] [§ source_file_name / parent_path]. Text and table HTML stay as text parts; images stay as image parts at their placeholder positions."},"evidence_text":{"type":"string","title":"Evidence Text","description":"DEPRECATED. Always empty. Knowhere no longer projects evidence into a string. Use evidence.","default":""},"answer_text":{"type":"string","title":"Answer Text","description":"DEPRECATED. Always empty; KNOWHERE no longer generates answers. Use evidence and synthesize answers downstream.","default":""},"referenced_chunks":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Referenced Chunks"},"results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Results","description":"Raw path chunks for debug. Content keeps placeholders; composed parts live on evidence."},"stop_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stop Reason"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason"},"decision_trace":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Decision Trace","description":"Per-step agentic retrieval trace. Each entry follows the observation/decision/result schema."}},"type":"object","required":["namespace","query","router_used"],"title":"RetrievalQueryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/documents":{"get":{"tags":["Documents","Documents"],"summary":"List Documents","operationId":"list_documents_v1_documents_get","parameters":[{"name":"namespace","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Namespace"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Items per page","default":50,"title":"Page Size"},"description":"Items per page"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/documents/{document_id}":{"get":{"tags":["Documents","Documents"],"summary":"Get Document","operationId":"get_document_v1_documents__document_id__get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}},{"name":"job_result_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Job Result Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/documents/{document_id}/chunks":{"get":{"tags":["Documents","Documents"],"summary":"List Document Chunks","operationId":"list_document_chunks_v1_documents__document_id__chunks_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}},{"name":"job_result_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Job Result Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Items per page","default":50,"title":"Page Size"},"description":"Items per page"},{"name":"chunk_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["text","image","table","page"],"type":"string"},{"type":"null"}],"description":"Chunk type filter","title":"Chunk Type"},"description":"Chunk type filter"},{"name":"include_asset_urls","in":"query","required":false,"schema":{"type":"boolean","description":"Generate 7-day asset URLs for image/table chunks when true","default":false,"title":"Include Asset Urls"},"description":"Generate 7-day asset URLs for image/table chunks when true"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/documents/{document_id}/chunks/{document_chunk_id}":{"get":{"tags":["Documents","Documents"],"summary":"Get Document Chunk","operationId":"get_document_chunk_v1_documents__document_id__chunks__document_chunk_id__get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}},{"name":"document_chunk_id","in":"path","required":true,"schema":{"type":"string","title":"Document Chunk Id"}},{"name":"job_result_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Job Result Id"}},{"name":"include_asset_urls","in":"query","required":false,"schema":{"type":"boolean","description":"Generate 7-day asset URLs for image/table chunks when true","default":false,"title":"Include Asset Urls"},"description":"Generate 7-day asset URLs for image/table chunks when true"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/documents/{document_id}/archive":{"post":{"tags":["Documents","Documents"],"summary":"Archive Document","operationId":"archive_document_v1_documents__document_id__archive_post","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/internal/s3-events":{"get":{"tags":["Internal","Internal"],"summary":"Handle S3 webhook GET requests","description":"Handle S3-event GET requests, primarily for SNS subscription confirmation.","operationId":"handle_s3_events_get_v1_internal_s3_events_get","parameters":[{"name":"x-amz-sns-message-type","in":"header","required":false,"schema":{"type":"string","title":"X-Amz-Sns-Message-Type"}},{"name":"x-minio-auth-token","in":"header","required":false,"schema":{"type":"string","title":"X-Minio-Auth-Token"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Handle S3 Events Get V1 Internal S3 Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}},"post":{"tags":["Internal","Internal"],"summary":"Handle S3 webhook POST requests","description":"Handle S3-event POST requests from AWS SNS, MinIO, OSS, or tests.","operationId":"handle_s3_events_v1_internal_s3_events_post","parameters":[{"name":"x-amz-sns-message-type","in":"header","required":false,"schema":{"type":"string","title":"X-Amz-Sns-Message-Type"}},{"name":"x-minio-auth-token","in":"header","required":false,"schema":{"type":"string","title":"X-Minio-Auth-Token"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Handle S3 Events V1 Internal S3 Events Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/webhooks/logs":{"get":{"tags":["Webhook Management","Webhook"],"summary":"Get Webhook Delivery Logs","description":"Get webhook delivery history logs.\n\nReturns a paginated list of webhook delivery attempts, optionally filtered by job_id.\nEach log entry includes the delivery status, duration, and response details.","operationId":"get_webhook_logs_v1_webhooks_logs_get","parameters":[{"name":"job_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by Job ID","title":"Job Id"},"description":"Filter by Job ID"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":20,"title":"Page Size"},"description":"Page size"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"logs":{"items":{"properties":{"id":{"type":"string","title":"Id","description":"Log ID"},"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"webhook_url":{"type":"string","title":"Webhook Url","description":"Webhook URL"},"attempt_number":{"type":"integer","title":"Attempt Number","description":"Attempt number (1-6)"},"request_payload":{"additionalProperties":true,"type":"object","title":"Request Payload","description":"Request payload sent to webhook"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signature","description":"HMAC signature"},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key","description":"Idempotency key"},"response_status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response Status Code","description":"HTTP response status code"},"response_body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Body","description":"Response body (truncated)"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Error message if request failed"},"duration_ms":{"type":"integer","title":"Duration Ms","description":"Request duration in milliseconds","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when attempt was made"}},"type":"object","required":["id","job_id","webhook_url","attempt_number","request_payload","created_at"],"title":"WebhookLogResponse","description":"Webhook delivery attempt log entry."},"type":"array","title":"Logs","description":"List of log entries"},"total":{"type":"integer","title":"Total","description":"Total count in this page"},"page":{"type":"integer","title":"Page","description":"Current page number"},"page_size":{"type":"integer","title":"Page Size","description":"Page size"}},"type":"object","required":["logs","total","page","page_size"],"title":"WebhookLogList","description":"Paginated list of webhook delivery logs."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/webhooks/trigger":{"post":{"tags":["Webhook Management","Webhook"],"summary":"Manually Trigger Webhook","description":"Manually trigger a webhook for a completed or failed job.\n\nThis sends a webhook notification synchronously and returns the delivery result.\nUse this for testing or retrying failed webhook deliveries.","operationId":"trigger_webhook_v1_webhooks_trigger_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Job ID to trigger webhook for"}},"type":"object","required":["job_id"],"title":"WebhookTriggerRequest","description":"Request to manually trigger a webhook."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the webhook was delivered successfully"},"status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status Code","description":"HTTP status code from target server"},"response_body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Body","description":"Response body from target server"},"duration_ms":{"type":"integer","title":"Duration Ms","description":"Request duration in milliseconds"},"delivery_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Id","description":"Delivery log ID for reference"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Error message if request failed"}},"type":"object","required":["success","duration_ms"],"title":"WebhookTriggerResponse","description":"Response from manual webhook trigger."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/webhooks/secrets":{"get":{"tags":["Webhook Secrets","Webhook Secrets"],"summary":"List Webhook Secrets","description":"List all webhook secrets for the current user.\n\nReturns masked secrets by default. Use POST to create new secrets\nand see the full value (one-time display).","operationId":"list_secrets_v1_webhooks_secrets_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"secrets":{"items":{"properties":{"id":{"type":"string","title":"Id","description":"Secret ID (ws_...)"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint","description":"Endpoint URL or null for default"},"secret_masked":{"type":"string","title":"Secret Masked","description":"Masked secret (whsec_****...)"},"status":{"type":"string","title":"Status","description":"'active' or 'revoked'"},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp (ISO 8601)"}},"type":"object","required":["id","secret_masked","status","created_at"],"title":"SecretResponse","description":"Webhook secret response (masked)."},"type":"array","title":"Secrets"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["secrets","total"],"title":"SecretListResponse","description":"List of webhook secrets."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}},"post":{"tags":["Webhook Secrets","Webhook Secrets"],"summary":"Create Webhook Secret","description":"Create a new webhook secret.\n\nIf no endpoint is specified, creates a default account-level secret.\nThe full secret value is returned ONLY in this response (one-time display).","operationId":"create_secret_v1_webhooks_secrets_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint","description":"Optional endpoint URL. If omitted, creates a default account secret."}},"type":"object","title":"SecretCreateRequest","description":"Request to create a new webhook secret."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"properties":{"id":{"type":"string","title":"Id","description":"Secret ID (ws_...)"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint","description":"Endpoint URL or null for default"},"secret_masked":{"type":"string","title":"Secret Masked","description":"Masked secret (whsec_****...)"},"status":{"type":"string","title":"Status","description":"'active' or 'revoked'"},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp (ISO 8601)"}},"type":"object","required":["id","secret_masked","status","created_at"],"title":"SecretResponse","description":"Webhook secret response (masked)."},{"properties":{"id":{"type":"string","title":"Id","description":"Secret ID (ws_...)"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint","description":"Endpoint URL or null for default"},"secret_masked":{"type":"string","title":"Secret Masked","description":"Masked secret (whsec_****...)"},"status":{"type":"string","title":"Status","description":"'active' or 'revoked'"},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp (ISO 8601)"},"secret":{"type":"string","title":"Secret","description":"Secret value"}},"type":"object","required":["id","secret_masked","status","created_at","secret"],"title":"SecretFullResponse","description":"Webhook secret response with full value (creation only)."}],"title":"Response Create Secret V1 Webhooks Secrets Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/webhooks/secrets/{secret_id}":{"delete":{"tags":["Webhook Secrets","Webhook Secrets"],"summary":"Revoke Webhook Secret","description":"Revoke a webhook secret immediately.\n\nRevoked secrets cannot be used for signing. This action is irreversible.","operationId":"revoke_secret_v1_webhooks_secrets__secret_id__delete","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","title":"Secret Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v1/webhooks/qstash/callback":{"post":{"tags":["QStash Callbacks","QStash Callbacks"],"summary":"Handle Qstash Callback","description":"Handle QStash success callback after webhook delivery.","operationId":"handle_qstash_callback_v1_webhooks_qstash_callback_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/webhooks/qstash/failure":{"post":{"tags":["QStash Callbacks","QStash Callbacks"],"summary":"Handle Qstash Failure","description":"Handle QStash failure callback after all retries exhausted.","operationId":"handle_qstash_failure_v1_webhooks_qstash_failure_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/version":{"get":{"tags":["Version"],"summary":"Get application version information","description":"Return version information for the current deployment.\n\nResponse shape:\n{\n    \"version\": \"v1.0.0\",\n    \"commit\": \"abc1234\",\n    \"build_time\": \"2024-01-01T00:00:00Z\",\n    \"environment\": \"production\"\n}","operationId":"get_version_v1_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/":{"get":{"tags":["Version"],"summary":"Root version information","description":"Return version information from the root path.","operationId":"root_version_v1__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v2/jobs":{"post":{"tags":["Jobs","Jobs"],"summary":"Create a v2 parsing job","description":"Create a v2 parsing job.","operationId":"create_job_v2_jobs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"namespace":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Namespace","description":"Retrieval namespace; defaults to default"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id","description":"Existing document ID for update flows"},"source_type":{"type":"string","enum":["file","url"],"title":"Source Type","description":"Document source type"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url","description":"Source URL; required when source_type=url"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name","description":"File name; required when source_type=file and must include the extension"},"data_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Data Id","description":"User-defined ID"},"parsing_params":{"anyOf":[{"properties":{"model":{"type":"string","enum":["base","advanced"],"title":"Model","description":"Parsing model","default":"base"},"ocr_enabled":{"type":"boolean","title":"Ocr Enabled","description":"Enable OCR","default":false},"doc_type":{"type":"string","enum":["auto","pdf","docx","txt","md"],"title":"Doc Type","description":"Document type","default":"auto"},"smart_title_parse":{"type":"boolean","title":"Smart Title Parse","description":"Enable smart heading parsing","default":true},"summary_image":{"type":"boolean","title":"Summary Image","description":"Generate image summaries","default":true},"summary_table":{"type":"boolean","title":"Summary Table","description":"Generate table summaries","default":true},"summary_txt":{"type":"boolean","title":"Summary Txt","description":"Generate text summaries","default":true},"add_frag_desc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Add Frag Desc","description":"Additional fragment description","default":""},"summary_use_llm":{"type":"boolean","title":"Summary Use Llm","description":"Use LLM to generate coherent hierarchical section summaries. When True, intermediate (non-leaf) sections get a real semantic summary instead of a plain title enumeration. Increases parse time and API token cost.","default":false},"top_summary_use_llm":{"type":"boolean","title":"Top Summary Use Llm","description":"Use LLM for the document-level top_summary written to doc_nav. Defaults to True because agentic document selection consumes this field. Section-level summaries remain controlled by summary_use_llm.","default":true}},"type":"object","title":"ParsingParams","description":"Parsing parameters."},{"type":"null"}],"description":"Parsing parameters"},"document_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Document Metadata","description":"Display metadata copied to the published document, such as created_by_client and client_version."},"webhook":{"anyOf":[{"properties":{"url":{"type":"string","title":"Url","description":"Webhook callback URL"}},"type":"object","required":["url"],"title":"WebhookConfig","description":"Webhook configuration."},{"type":"null"}],"description":"Webhook configuration"},"llm_config":{"anyOf":[{"properties":{"api_key":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Api Key","description":"Default provider API key"},"model":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Model","description":"Default model for both channels (overridden by models.*)"},"base_url":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Base Url","description":"Default OpenAI-compatible base URL"},"models":{"anyOf":[{"properties":{"text":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Text","description":"Text / planning model id"},"vision":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Vision","description":"Vision / VLM model id"}},"type":"object","title":"LLMModelsConfig","description":"Per-channel model ids that share root api_key / base_url."},{"type":"null"}],"description":"Per-channel model ids sharing root api_key / base_url"},"text":{"anyOf":[{"properties":{"api_key":{"type":"string","minLength":1,"title":"Api Key","description":"Provider API key"},"model":{"type":"string","minLength":1,"title":"Model","description":"Model identifier"},"base_url":{"type":"string","minLength":1,"title":"Base Url","description":"OpenAI-compatible base URL (e.g. https://api.openai.com/v1)"}},"type":"object","required":["api_key","model","base_url"],"title":"LLMProviderConfig","description":"Credentials for one OpenAI-compatible provider endpoint."},{"type":"null"}],"description":"Text / planning credentials (replaces root for text channel)"},"vision":{"anyOf":[{"properties":{"api_key":{"type":"string","minLength":1,"title":"Api Key","description":"Provider API key"},"model":{"type":"string","minLength":1,"title":"Model","description":"Model identifier"},"base_url":{"type":"string","minLength":1,"title":"Base Url","description":"OpenAI-compatible base URL (e.g. https://api.openai.com/v1)"}},"type":"object","required":["api_key","model","base_url"],"title":"LLMProviderConfig","description":"Credentials for one OpenAI-compatible provider endpoint."},{"type":"null"}],"description":"Vision / VLM credentials (replaces root for vision channel)"}},"type":"object","title":"LLMConfig","description":"OpenAI-compatible BYOK credentials (flat root + optional channel overrides).\n\nHappy path (one multimodal model for both channels)::\n\n    {\"api_key\": \"...\", \"model\": \"gpt-4o\", \"base_url\": \"https://api.openai.com/v1\"}\n\nSame endpoint, different models per channel::\n\n    {\n      \"api_key\": \"...\",\n      \"base_url\": \"https://api.openai.com/v1\",\n      \"models\": {\"text\": \"gpt-4o-mini\", \"vision\": \"gpt-4o\"}\n    }\n\nDifferent endpoints per channel::\n\n    {\n      \"text\": {\"api_key\": \"...\", \"model\": \"...\", \"base_url\": \"...\"},\n      \"vision\": {\"api_key\": \"...\", \"model\": \"...\", \"base_url\": \"...\"}\n    }\n\nSemantics:\n- root ``api_key`` + ``base_url`` with ``model`` and/or ``models`` -> shared auth\n- ``models.<channel>`` wins over root ``model`` for that channel\n- ``text`` / ``vision`` objects fully replace the root for that channel\n- a channel with no resolved model keeps server defaults"},{"type":"null"}],"description":"Optional bring-your-own-key OpenAI-compatible LLM credentials. Flat {api_key, model, base_url} applies to both channels. Use models.{text,vision} for different model ids on the same endpoint, or text/vision objects for different endpoints. When omitted, server defaults are used."}},"additionalProperties":false,"type":"object","required":["source_type"],"title":"JobCreateV2","description":"Public v2 request payload for creating a job."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace","description":"Effective namespace"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id","description":"Linked document ID"},"status":{"type":"string","enum":["pending","waiting-file","running","converting","done","failed"],"title":"Status","description":"Job status"},"source_type":{"type":"string","title":"Source Type","description":"Document source type"},"data_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Id","description":"User-defined ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation time"},"upload_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upload Url","description":"Upload URL"},"upload_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Upload Headers","description":"Upload request headers"},"expires_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In","description":"URL expiration in seconds"}},"type":"object","required":["job_id","status","source_type","created_at"],"title":"JobResponse","description":"Job-creation response."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}},"get":{"tags":["Jobs","Jobs"],"summary":"List jobs","description":"List jobs for the current user.","operationId":"list_jobs_v2_jobs_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Items per page","default":20,"title":"Page Size"},"description":"Items per page"},{"name":"job_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Status filter","title":"Job Status"},"description":"Status filter"},{"name":"job_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Job type filter","title":"Job Type"},"description":"Job type filter"},{"name":"recent_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Recent-day filter; supported values are 1, 7, and 30","enum":[1,7,30],"title":"Recent Days"},"description":"Recent-day filter; supported values are 1, 7, and 30"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Start time in ISO format","title":"Start Time"},"description":"Start time in ISO format"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"End time in ISO format","title":"End Time"},"description":"End time in ISO format"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"jobs":{"items":{"properties":{"job_result_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Result Id","description":"Immutable completed publication revision, when available"},"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace","description":"Effective retrieval namespace"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id","description":"Linked document ID"},"status":{"type":"string","enum":["pending","waiting-file","running","converting","done","failed"],"title":"Status","description":"Job status"},"source_type":{"type":"string","title":"Source Type","description":"File source type"},"data_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Id","description":"User-defined ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation time"},"progress":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Progress","description":"Progress information"},"error":{"anyOf":[{"properties":{"code":{"type":"string","title":"Code","description":"Canonical error code (e.g., INVALID_ARGUMENT, INTERNAL_ERROR)"},"message":{"type":"string","title":"Message","description":"Human-readable error message"},"request_id":{"type":"string","title":"Request Id","description":"Original request ID for tracing"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details (violations, retry_after, etc.)"}},"type":"object","required":["code","message","request_id"],"title":"StandardErrorObject","description":"Standard error object for embedded error pattern.\n\nReuses the same structure as synchronous API errors,\nenabling clients to use the same error handling logic\nfor both sync and async (job) errors."},{"type":"null"}],"description":"Error information (only when status=failed)"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result","description":"Parsing result (contains checksum and statistics)"},"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url","description":"Result file URL (ZIP download link)"},"result_url_expires_at":{"type":"string","format":"date-time","title":"Result Url Expires At","description":"Result URL expiration time"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name","description":"Source file name"},"file_extension":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Extension","description":"File extension, uppercase"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Parsing model used"},"ocr_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ocr Enabled","description":"Whether OCR is enabled"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds","description":"Job duration (updated_at - created_at, in seconds)"},"credits_spent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credits Spent","description":"Credits consumed"}},"type":"object","required":["job_id","status","source_type","created_at","result_url_expires_at"],"title":"JobResultResponse","description":"Job status query response (for GET /jobs/{job_id}/result)"},"type":"array","title":"Jobs","description":"Job list"},"total":{"type":"integer","title":"Total","description":"Total item count"},"page":{"type":"integer","title":"Page","description":"Current page number"},"page_size":{"type":"integer","title":"Page Size","description":"Items per page"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total page count"}},"type":"object","required":["jobs","total","page","page_size","total_pages"],"title":"JobList","description":"Paginated job-list response."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v2/jobs/{job_id}":{"get":{"tags":["Jobs","Jobs"],"summary":"Get a job result","description":"Return the result payload for one job.","operationId":"get_job_result_v2_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"job_result_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Result Id","description":"Immutable completed publication revision, when available"},"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace","description":"Effective retrieval namespace"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id","description":"Linked document ID"},"status":{"type":"string","enum":["pending","waiting-file","running","converting","done","failed"],"title":"Status","description":"Job status"},"source_type":{"type":"string","title":"Source Type","description":"File source type"},"data_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Id","description":"User-defined ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation time"},"progress":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Progress","description":"Progress information"},"error":{"anyOf":[{"properties":{"code":{"type":"string","title":"Code","description":"Canonical error code (e.g., INVALID_ARGUMENT, INTERNAL_ERROR)"},"message":{"type":"string","title":"Message","description":"Human-readable error message"},"request_id":{"type":"string","title":"Request Id","description":"Original request ID for tracing"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details (violations, retry_after, etc.)"}},"type":"object","required":["code","message","request_id"],"title":"StandardErrorObject","description":"Standard error object for embedded error pattern.\n\nReuses the same structure as synchronous API errors,\nenabling clients to use the same error handling logic\nfor both sync and async (job) errors."},{"type":"null"}],"description":"Error information (only when status=failed)"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result","description":"Parsing result (contains checksum and statistics)"},"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url","description":"Result file URL (ZIP download link)"},"result_url_expires_at":{"type":"string","format":"date-time","title":"Result Url Expires At","description":"Result URL expiration time"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name","description":"Source file name"},"file_extension":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Extension","description":"File extension, uppercase"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Parsing model used"},"ocr_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ocr Enabled","description":"Whether OCR is enabled"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds","description":"Job duration (updated_at - created_at, in seconds)"},"credits_spent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credits Spent","description":"Credits consumed"}},"type":"object","required":["job_id","status","source_type","created_at","result_url_expires_at"],"title":"JobResultResponse","description":"Job status query response (for GET /jobs/{job_id}/result)"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}},"delete":{"tags":["Jobs","Jobs"],"summary":"Reject deletion of retained demo revisions","operationId":"delete_job_v2_jobs__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v2/jobs/{job_id}/confirm-upload":{"post":{"tags":["Jobs","Jobs"],"summary":"Confirm file upload","description":"Confirm a completed file upload as a fallback path.","operationId":"confirm_upload_v2_jobs__job_id__confirm_upload_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"properties":{},"type":"object","title":"ConfirmUploadRequest","description":"Request payload for confirming a file upload."},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Confirm Upload V2 Jobs  Job Id  Confirm Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v2/jobs/{job_id}/upload-url":{"post":{"tags":["Jobs","Jobs"],"summary":"Renew a waiting job upload URL","operationId":"renew_upload_url_v2_jobs__job_id__upload_url_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v2/retrieval/query":{"post":{"tags":["Retrieval","Retrieval"],"summary":"Query Retrieval","operationId":"query_retrieval_v2_retrieval_query_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"namespace":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Namespace","description":"Effective namespace; defaults to default"},"query":{"type":"string","title":"Query"},"top_k":{"type":"integer","title":"Top K","default":10},"include_document_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Include Document Ids","description":"Document allowlist: null means unrestricted, [] means empty; exclusions win."},"exclude_document_ids":{"items":{"type":"string"},"type":"array","title":"Exclude Document Ids","description":"Documents excluded from every retrieval path. Exclusions override include_document_ids."},"exclude_sections":{"items":{"properties":{"document_id":{"type":"string","title":"Document Id"},"section_path":{"type":"string","title":"Section Path"}},"type":"object","required":["document_id","section_path"],"title":"ExcludeSection"},"type":"array","title":"Exclude Sections"},"data_type":{"type":"integer","maximum":8.0,"minimum":1.0,"title":"Data Type","description":"Chunk type filter: 1=all, 2=text, 3=image, 4=table, 5=text+image, 6=text+table, 7=page, 8=text+image+table","default":1,"deprecated":true},"chunk_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Chunk Types","description":"Allowed chunk types for retrieval. Options: text, image, table, page. None or empty means all types. Overrides data_type if provided."},"signal_paths":{"items":{"type":"string"},"type":"array","title":"Signal Paths","description":"Path keywords for include/exclude filtering"},"filter_mode":{"type":"string","enum":["delete","keep"],"title":"Filter Mode","description":"Signal path filter mode","default":"delete"},"rerank":{"type":"boolean","title":"Rerank","description":"Enable LLM reranking after RRF fusion","default":false},"threshold":{"type":"number","minimum":0.0,"title":"Threshold","description":"Minimum RRF score threshold","default":0.0},"internal_recall_k":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Internal Recall K","description":"Override per-channel recall count"},"use_agentic":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Agentic","description":"Turns agent retrieval on or off. False uses classic map-unit BM25. Unset or true turns agent retrieval on; AGENT_EXPLORE_HARNESS then selects Cursor (cursor_sdk) or Knowhere's own harness (openai)."},"agent_explore_model":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Agent Explore Model","description":"Optional Cursor model when agent retrieval is on and AGENT_EXPLORE_HARNESS=cursor_sdk. Omit or leave empty to use AGENT_EXPLORE_CURSOR_MODEL (default composer-2.5). Ignored when agent retrieval is off or the harness is openai."},"conversation_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Conversation Id","description":"Caller-supplied conversation identifier, threaded through for retrieval tracing. Does not affect caching or result content."},"llm_config":{"anyOf":[{"properties":{"api_key":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Api Key","description":"Default provider API key"},"model":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Model","description":"Default model for both channels (overridden by models.*)"},"base_url":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Base Url","description":"Default OpenAI-compatible base URL"},"models":{"anyOf":[{"properties":{"text":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Text","description":"Text / planning model id"},"vision":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Vision","description":"Vision / VLM model id"}},"type":"object","title":"LLMModelsConfig","description":"Per-channel model ids that share root api_key / base_url."},{"type":"null"}],"description":"Per-channel model ids sharing root api_key / base_url"},"text":{"anyOf":[{"properties":{"api_key":{"type":"string","minLength":1,"title":"Api Key","description":"Provider API key"},"model":{"type":"string","minLength":1,"title":"Model","description":"Model identifier"},"base_url":{"type":"string","minLength":1,"title":"Base Url","description":"OpenAI-compatible base URL (e.g. https://api.openai.com/v1)"}},"type":"object","required":["api_key","model","base_url"],"title":"LLMProviderConfig","description":"Credentials for one OpenAI-compatible provider endpoint."},{"type":"null"}],"description":"Text / planning credentials (replaces root for text channel)"},"vision":{"anyOf":[{"properties":{"api_key":{"type":"string","minLength":1,"title":"Api Key","description":"Provider API key"},"model":{"type":"string","minLength":1,"title":"Model","description":"Model identifier"},"base_url":{"type":"string","minLength":1,"title":"Base Url","description":"OpenAI-compatible base URL (e.g. https://api.openai.com/v1)"}},"type":"object","required":["api_key","model","base_url"],"title":"LLMProviderConfig","description":"Credentials for one OpenAI-compatible provider endpoint."},{"type":"null"}],"description":"Vision / VLM credentials (replaces root for vision channel)"}},"type":"object","title":"LLMConfig","description":"OpenAI-compatible BYOK credentials (flat root + optional channel overrides).\n\nHappy path (one multimodal model for both channels)::\n\n    {\"api_key\": \"...\", \"model\": \"gpt-4o\", \"base_url\": \"https://api.openai.com/v1\"}\n\nSame endpoint, different models per channel::\n\n    {\n      \"api_key\": \"...\",\n      \"base_url\": \"https://api.openai.com/v1\",\n      \"models\": {\"text\": \"gpt-4o-mini\", \"vision\": \"gpt-4o\"}\n    }\n\nDifferent endpoints per channel::\n\n    {\n      \"text\": {\"api_key\": \"...\", \"model\": \"...\", \"base_url\": \"...\"},\n      \"vision\": {\"api_key\": \"...\", \"model\": \"...\", \"base_url\": \"...\"}\n    }\n\nSemantics:\n- root ``api_key`` + ``base_url`` with ``model`` and/or ``models`` -> shared auth\n- ``models.<channel>`` wins over root ``model`` for that channel\n- ``text`` / ``vision`` objects fully replace the root for that channel\n- a channel with no resolved model keeps server defaults"},{"type":"null"}],"description":"Optional bring-your-own-key OpenAI-compatible LLM credentials. Flat {api_key, model, base_url} applies to both channels. Use models.{text,vision} for different model ids on the same endpoint, or text/vision objects for different endpoints. When omitted, server defaults are used."}},"type":"object","required":["query"],"title":"RetrievalQueryRequestV2","description":"v2 retrieval query request with optional BYOK LLM credentials."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"namespace":{"type":"string","title":"Namespace"},"query":{"type":"string","title":"Query"},"router_used":{"type":"string","title":"Router Used"},"evidence":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Evidence","description":"Grouped evidence blocks. Each group starts with [E1] [§ source_file_name / parent_path]. Text and table HTML stay as text parts; images stay as image parts at their placeholder positions."},"evidence_text":{"type":"string","title":"Evidence Text","description":"DEPRECATED. Always empty. Knowhere no longer projects evidence into a string. Use evidence.","default":""},"answer_text":{"type":"string","title":"Answer Text","description":"DEPRECATED. Always empty; KNOWHERE no longer generates answers. Use evidence and synthesize answers downstream.","default":""},"referenced_chunks":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Referenced Chunks"},"results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Results","description":"Raw path chunks for debug. Content keeps placeholders; composed parts live on evidence."},"stop_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stop Reason"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason"},"decision_trace":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Decision Trace","description":"Per-step agentic retrieval trace. Each entry follows the observation/decision/result schema."}},"type":"object","required":["namespace","query","router_used"],"title":"RetrievalQueryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v2/documents/{document_id}/files/page-citation-source":{"get":{"tags":["Documents","Documents"],"summary":"Get Document Page Citation Source","operationId":"get_document_page_citation_source_v2_documents__document_id__files_page_citation_source_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}},{"name":"job_result_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Job Result Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Document Page Citation Source V2 Documents  Document Id  Files Page Citation Source Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v2/documents":{"get":{"tags":["Documents","Documents"],"summary":"List Documents","operationId":"list_documents_v2_documents_get","parameters":[{"name":"namespace","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Namespace"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Items per page","default":50,"title":"Page Size"},"description":"Items per page"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v2/documents/{document_id}":{"get":{"tags":["Documents","Documents"],"summary":"Get Document","operationId":"get_document_v2_documents__document_id__get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}},{"name":"job_result_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Job Result Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v2/documents/{document_id}/chunks":{"get":{"tags":["Documents","Documents"],"summary":"List Document Chunks","operationId":"list_document_chunks_v2_documents__document_id__chunks_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}},{"name":"job_result_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Job Result Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Items per page","default":50,"title":"Page Size"},"description":"Items per page"},{"name":"chunk_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["text","image","table","page"],"type":"string"},{"type":"null"}],"description":"Chunk type filter","title":"Chunk Type"},"description":"Chunk type filter"},{"name":"include_asset_urls","in":"query","required":false,"schema":{"type":"boolean","description":"Generate 7-day asset URLs for image/table chunks when true","default":false,"title":"Include Asset Urls"},"description":"Generate 7-day asset URLs for image/table chunks when true"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v2/documents/{document_id}/chunks/{document_chunk_id}":{"get":{"tags":["Documents","Documents"],"summary":"Get Document Chunk","operationId":"get_document_chunk_v2_documents__document_id__chunks__document_chunk_id__get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}},{"name":"document_chunk_id","in":"path","required":true,"schema":{"type":"string","title":"Document Chunk Id"}},{"name":"job_result_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Job Result Id"}},{"name":"include_asset_urls","in":"query","required":false,"schema":{"type":"boolean","description":"Generate 7-day asset URLs for image/table chunks when true","default":false,"title":"Include Asset Urls"},"description":"Generate 7-day asset URLs for image/table chunks when true"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}},"/v2/documents/{document_id}/archive":{"post":{"tags":["Documents","Documents"],"summary":"Archive Document","operationId":"archive_document_v2_documents__document_id__archive_post","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","title":"Document Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Bearer <token> OR internal signature auth","title":"Authorization"},"description":"Bearer <token> OR internal signature auth"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}}}}},"components":{"schemas":{"BuyCreditsPackageRequest":{"properties":{"price_id":{"type":"string","title":"Price Id","description":"Stripe price ID"},"quantity":{"type":"integer","exclusiveMinimum":0.0,"title":"Quantity","description":"Quantity to purchase","default":1}},"type":"object","required":["price_id"],"title":"BuyCreditsPackageRequest","description":"Request payload for purchasing a credits package by price ID."},"BuyCreditsRequest":{"properties":{"credits_amount":{"type":"integer","exclusiveMinimum":0.0,"title":"Credits Amount","description":"Credits amount to purchase"},"payment_method_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method Id","description":"Payment method ID"}},"type":"object","required":["credits_amount"],"title":"BuyCreditsRequest","description":"Request payload for purchasing credits directly."},"CheckoutSessionResponse":{"properties":{"checkout_url":{"type":"string","title":"Checkout Url"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["checkout_url","session_id"],"title":"CheckoutSessionResponse","description":"Checkout-session response."},"ConfirmUploadRequest":{"properties":{},"type":"object","title":"ConfirmUploadRequest","description":"Request payload for confirming a file upload."},"CreateAPIKeyRequest":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"API key name"},"enabled_modules":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enabled Modules","description":"Enabled feature modules"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"Expiration time"}},"type":"object","required":["name"],"title":"CreateAPIKeyRequest","description":"Request payload for creating an API key."},"CreditsBalanceResponse":{"properties":{"credits_balance":{"type":"number","title":"Credits Balance"}},"type":"object","required":["credits_balance"],"title":"CreditsBalanceResponse","description":"Credits-balance response."},"ExcludeSection":{"properties":{"document_id":{"type":"string","title":"Document Id"},"section_path":{"type":"string","title":"Section Path"}},"type":"object","required":["document_id","section_path"],"title":"ExcludeSection"},"GuestRateLimitInfo":{"properties":{"rpm":{"type":"integer","title":"Rpm","description":"Requests per minute (-1 = unlimited)"},"daily_quota":{"type":"integer","title":"Daily Quota","description":"Requests per day (-1 = unlimited)"},"max_concurrent_jobs":{"type":"integer","title":"Max Concurrent Jobs","description":"Maximum concurrent jobs"}},"type":"object","required":["rpm","daily_quota","max_concurrent_jobs"],"title":"GuestRateLimitInfo","description":"Rate limit metadata returned with guest registration."},"GuestRegisterRequest":{"properties":{"device_id":{"type":"string","maxLength":255,"minLength":1,"title":"Device Id","description":"Stable client device identifier"},"client":{"type":"string","maxLength":64,"minLength":1,"title":"Client","description":"Client application name, e.g. knowhere-hub"},"platform":{"type":"string","maxLength":64,"minLength":1,"title":"Platform","description":"Operating system, e.g. macos"},"app_version":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"App Version","description":"Client application version"}},"type":"object","required":["device_id","client","platform"],"title":"GuestRegisterRequest","description":"Register a guest device."},"GuestRegisterResponse":{"properties":{"guest_user_id":{"type":"string","title":"Guest User Id"},"device_id":{"type":"string","title":"Device Id"},"api_key":{"type":"string","title":"Api Key","description":"Plaintext API key (sk_...), issued on first registration"},"rate_limit":{"$ref":"#/components/schemas/GuestRateLimitInfo"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"API key expiry timestamp, or null for non-expiring guest keys"}},"type":"object","required":["guest_user_id","device_id","api_key","rate_limit","expires_at"],"title":"GuestRegisterResponse","description":"Response for guest device registration."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JobCreate":{"properties":{"namespace":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Namespace","description":"Retrieval namespace; defaults to default"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id","description":"Existing document ID for update flows"},"source_type":{"type":"string","enum":["file","url"],"title":"Source Type","description":"Document source type"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url","description":"Source URL; required when source_type=url"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name","description":"File name; required when source_type=file and must include the extension"},"data_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Data Id","description":"User-defined ID"},"parsing_params":{"anyOf":[{"$ref":"#/components/schemas/ParsingParams"},{"type":"null"}],"description":"Parsing parameters"},"document_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Document Metadata","description":"Display metadata copied to the published document, such as created_by_client and client_version."},"webhook":{"anyOf":[{"$ref":"#/components/schemas/WebhookConfig"},{"type":"null"}],"description":"Webhook configuration"}},"additionalProperties":false,"type":"object","required":["source_type"],"title":"JobCreate","description":"Public v1 request payload for creating a job."},"JobCreateV2":{"properties":{"namespace":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Namespace","description":"Retrieval namespace; defaults to default"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id","description":"Existing document ID for update flows"},"source_type":{"type":"string","enum":["file","url"],"title":"Source Type","description":"Document source type"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url","description":"Source URL; required when source_type=url"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name","description":"File name; required when source_type=file and must include the extension"},"data_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Data Id","description":"User-defined ID"},"parsing_params":{"anyOf":[{"$ref":"#/components/schemas/ParsingParams"},{"type":"null"}],"description":"Parsing parameters"},"document_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Document Metadata","description":"Display metadata copied to the published document, such as created_by_client and client_version."},"webhook":{"anyOf":[{"$ref":"#/components/schemas/WebhookConfig"},{"type":"null"}],"description":"Webhook configuration"},"llm_config":{"anyOf":[{"$ref":"#/components/schemas/LLMConfig"},{"type":"null"}],"description":"Optional bring-your-own-key OpenAI-compatible LLM credentials. Flat {api_key, model, base_url} applies to both channels. Use models.{text,vision} for different model ids on the same endpoint, or text/vision objects for different endpoints. When omitted, server defaults are used."}},"additionalProperties":false,"type":"object","required":["source_type"],"title":"JobCreateV2","description":"Public v2 request payload for creating a job."},"JobList":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/JobResultResponse"},"type":"array","title":"Jobs","description":"Job list"},"total":{"type":"integer","title":"Total","description":"Total item count"},"page":{"type":"integer","title":"Page","description":"Current page number"},"page_size":{"type":"integer","title":"Page Size","description":"Items per page"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total page count"}},"type":"object","required":["jobs","total","page","page_size","total_pages"],"title":"JobList","description":"Paginated job-list response."},"JobResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace","description":"Effective namespace"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id","description":"Linked document ID"},"status":{"type":"string","enum":["pending","waiting-file","running","converting","done","failed"],"title":"Status","description":"Job status"},"source_type":{"type":"string","title":"Source Type","description":"Document source type"},"data_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Id","description":"User-defined ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation time"},"upload_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upload Url","description":"Upload URL"},"upload_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Upload Headers","description":"Upload request headers"},"expires_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In","description":"URL expiration in seconds"}},"type":"object","required":["job_id","status","source_type","created_at"],"title":"JobResponse","description":"Job-creation response."},"JobResultResponse":{"properties":{"job_result_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Result Id","description":"Immutable completed publication revision, when available"},"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace","description":"Effective retrieval namespace"},"document_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Id","description":"Linked document ID"},"status":{"type":"string","enum":["pending","waiting-file","running","converting","done","failed"],"title":"Status","description":"Job status"},"source_type":{"type":"string","title":"Source Type","description":"File source type"},"data_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Id","description":"User-defined ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation time"},"progress":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Progress","description":"Progress information"},"error":{"anyOf":[{"$ref":"#/components/schemas/StandardErrorObject"},{"type":"null"}],"description":"Error information (only when status=failed)"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result","description":"Parsing result (contains checksum and statistics)"},"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url","description":"Result file URL (ZIP download link)"},"result_url_expires_at":{"type":"string","format":"date-time","title":"Result Url Expires At","description":"Result URL expiration time"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name","description":"Source file name"},"file_extension":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Extension","description":"File extension, uppercase"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Parsing model used"},"ocr_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ocr Enabled","description":"Whether OCR is enabled"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds","description":"Job duration (updated_at - created_at, in seconds)"},"credits_spent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credits Spent","description":"Credits consumed"}},"type":"object","required":["job_id","status","source_type","created_at","result_url_expires_at"],"title":"JobResultResponse","description":"Job status query response (for GET /jobs/{job_id}/result)"},"LLMConfig":{"properties":{"api_key":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Api Key","description":"Default provider API key"},"model":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Model","description":"Default model for both channels (overridden by models.*)"},"base_url":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Base Url","description":"Default OpenAI-compatible base URL"},"models":{"anyOf":[{"$ref":"#/components/schemas/LLMModelsConfig"},{"type":"null"}],"description":"Per-channel model ids sharing root api_key / base_url"},"text":{"anyOf":[{"$ref":"#/components/schemas/LLMProviderConfig"},{"type":"null"}],"description":"Text / planning credentials (replaces root for text channel)"},"vision":{"anyOf":[{"$ref":"#/components/schemas/LLMProviderConfig"},{"type":"null"}],"description":"Vision / VLM credentials (replaces root for vision channel)"}},"type":"object","title":"LLMConfig","description":"OpenAI-compatible BYOK credentials (flat root + optional channel overrides).\n\nHappy path (one multimodal model for both channels)::\n\n    {\"api_key\": \"...\", \"model\": \"gpt-4o\", \"base_url\": \"https://api.openai.com/v1\"}\n\nSame endpoint, different models per channel::\n\n    {\n      \"api_key\": \"...\",\n      \"base_url\": \"https://api.openai.com/v1\",\n      \"models\": {\"text\": \"gpt-4o-mini\", \"vision\": \"gpt-4o\"}\n    }\n\nDifferent endpoints per channel::\n\n    {\n      \"text\": {\"api_key\": \"...\", \"model\": \"...\", \"base_url\": \"...\"},\n      \"vision\": {\"api_key\": \"...\", \"model\": \"...\", \"base_url\": \"...\"}\n    }\n\nSemantics:\n- root ``api_key`` + ``base_url`` with ``model`` and/or ``models`` -> shared auth\n- ``models.<channel>`` wins over root ``model`` for that channel\n- ``text`` / ``vision`` objects fully replace the root for that channel\n- a channel with no resolved model keeps server defaults"},"LLMModelsConfig":{"properties":{"text":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Text","description":"Text / planning model id"},"vision":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Vision","description":"Vision / VLM model id"}},"type":"object","title":"LLMModelsConfig","description":"Per-channel model ids that share root api_key / base_url."},"LLMProviderConfig":{"properties":{"api_key":{"type":"string","minLength":1,"title":"Api Key","description":"Provider API key"},"model":{"type":"string","minLength":1,"title":"Model","description":"Model identifier"},"base_url":{"type":"string","minLength":1,"title":"Base Url","description":"OpenAI-compatible base URL (e.g. https://api.openai.com/v1)"}},"type":"object","required":["api_key","model","base_url"],"title":"LLMProviderConfig","description":"Credentials for one OpenAI-compatible provider endpoint."},"ParseUsageResponse":{"properties":{"request_total":{"type":"integer","title":"Request Total"},"mom_growth":{"type":"number","title":"Mom Growth"},"credits_used":{"type":"number","title":"Credits Used"},"estimated_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Amount"},"success_rate":{"type":"number","title":"Success Rate"},"avg_processing_time":{"type":"number","title":"Avg Processing Time"}},"type":"object","required":["request_total","mom_growth","credits_used","estimated_amount","success_rate","avg_processing_time"],"title":"ParseUsageResponse"},"ParsingParams":{"properties":{"model":{"type":"string","enum":["base","advanced"],"title":"Model","description":"Parsing model","default":"base"},"ocr_enabled":{"type":"boolean","title":"Ocr Enabled","description":"Enable OCR","default":false},"doc_type":{"type":"string","enum":["auto","pdf","docx","txt","md"],"title":"Doc Type","description":"Document type","default":"auto"},"smart_title_parse":{"type":"boolean","title":"Smart Title Parse","description":"Enable smart heading parsing","default":true},"summary_image":{"type":"boolean","title":"Summary Image","description":"Generate image summaries","default":true},"summary_table":{"type":"boolean","title":"Summary Table","description":"Generate table summaries","default":true},"summary_txt":{"type":"boolean","title":"Summary Txt","description":"Generate text summaries","default":true},"add_frag_desc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Add Frag Desc","description":"Additional fragment description","default":""},"summary_use_llm":{"type":"boolean","title":"Summary Use Llm","description":"Use LLM to generate coherent hierarchical section summaries. When True, intermediate (non-leaf) sections get a real semantic summary instead of a plain title enumeration. Increases parse time and API token cost.","default":false},"top_summary_use_llm":{"type":"boolean","title":"Top Summary Use Llm","description":"Use LLM for the document-level top_summary written to doc_nav. Defaults to True because agentic document selection consumes this field. Section-level summaries remain controlled by summary_use_llm.","default":true}},"type":"object","title":"ParsingParams","description":"Parsing parameters."},"PaymentIntentResponse":{"properties":{"client_secret":{"type":"string","title":"Client Secret"},"payment_intent_id":{"type":"string","title":"Payment Intent Id"}},"type":"object","required":["client_secret","payment_intent_id"],"title":"PaymentIntentResponse","description":"Payment-intent response."},"RetrievalQueryRequest":{"properties":{"namespace":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Namespace","description":"Effective namespace; defaults to default"},"query":{"type":"string","title":"Query"},"top_k":{"type":"integer","title":"Top K","default":10},"include_document_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Include Document Ids","description":"Document allowlist: null means unrestricted, [] means empty; exclusions win."},"exclude_document_ids":{"items":{"type":"string"},"type":"array","title":"Exclude Document Ids","description":"Documents excluded from every retrieval path. Exclusions override include_document_ids."},"exclude_sections":{"items":{"$ref":"#/components/schemas/ExcludeSection"},"type":"array","title":"Exclude Sections"},"data_type":{"type":"integer","maximum":8.0,"minimum":1.0,"title":"Data Type","description":"Chunk type filter: 1=all, 2=text, 3=image, 4=table, 5=text+image, 6=text+table, 7=page, 8=text+image+table","default":1,"deprecated":true},"chunk_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Chunk Types","description":"Allowed chunk types for retrieval. Options: text, image, table, page. None or empty means all types. Overrides data_type if provided."},"signal_paths":{"items":{"type":"string"},"type":"array","title":"Signal Paths","description":"Path keywords for include/exclude filtering"},"filter_mode":{"type":"string","enum":["delete","keep"],"title":"Filter Mode","description":"Signal path filter mode","default":"delete"},"rerank":{"type":"boolean","title":"Rerank","description":"Enable LLM reranking after RRF fusion","default":false},"threshold":{"type":"number","minimum":0.0,"title":"Threshold","description":"Minimum RRF score threshold","default":0.0},"internal_recall_k":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Internal Recall K","description":"Override per-channel recall count"},"use_agentic":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Agentic","description":"Turns agent retrieval on or off. False uses classic map-unit BM25. Unset or true turns agent retrieval on; AGENT_EXPLORE_HARNESS then selects Cursor (cursor_sdk) or Knowhere's own harness (openai)."},"agent_explore_model":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Agent Explore Model","description":"Optional Cursor model when agent retrieval is on and AGENT_EXPLORE_HARNESS=cursor_sdk. Omit or leave empty to use AGENT_EXPLORE_CURSOR_MODEL (default composer-2.5). Ignored when agent retrieval is off or the harness is openai."},"conversation_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Conversation Id","description":"Caller-supplied conversation identifier, threaded through for retrieval tracing. Does not affect caching or result content."}},"type":"object","required":["query"],"title":"RetrievalQueryRequest"},"RetrievalQueryRequestV2":{"properties":{"namespace":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Namespace","description":"Effective namespace; defaults to default"},"query":{"type":"string","title":"Query"},"top_k":{"type":"integer","title":"Top K","default":10},"include_document_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Include Document Ids","description":"Document allowlist: null means unrestricted, [] means empty; exclusions win."},"exclude_document_ids":{"items":{"type":"string"},"type":"array","title":"Exclude Document Ids","description":"Documents excluded from every retrieval path. Exclusions override include_document_ids."},"exclude_sections":{"items":{"$ref":"#/components/schemas/ExcludeSection"},"type":"array","title":"Exclude Sections"},"data_type":{"type":"integer","maximum":8.0,"minimum":1.0,"title":"Data Type","description":"Chunk type filter: 1=all, 2=text, 3=image, 4=table, 5=text+image, 6=text+table, 7=page, 8=text+image+table","default":1,"deprecated":true},"chunk_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Chunk Types","description":"Allowed chunk types for retrieval. Options: text, image, table, page. None or empty means all types. Overrides data_type if provided."},"signal_paths":{"items":{"type":"string"},"type":"array","title":"Signal Paths","description":"Path keywords for include/exclude filtering"},"filter_mode":{"type":"string","enum":["delete","keep"],"title":"Filter Mode","description":"Signal path filter mode","default":"delete"},"rerank":{"type":"boolean","title":"Rerank","description":"Enable LLM reranking after RRF fusion","default":false},"threshold":{"type":"number","minimum":0.0,"title":"Threshold","description":"Minimum RRF score threshold","default":0.0},"internal_recall_k":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Internal Recall K","description":"Override per-channel recall count"},"use_agentic":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Agentic","description":"Turns agent retrieval on or off. False uses classic map-unit BM25. Unset or true turns agent retrieval on; AGENT_EXPLORE_HARNESS then selects Cursor (cursor_sdk) or Knowhere's own harness (openai)."},"agent_explore_model":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Agent Explore Model","description":"Optional Cursor model when agent retrieval is on and AGENT_EXPLORE_HARNESS=cursor_sdk. Omit or leave empty to use AGENT_EXPLORE_CURSOR_MODEL (default composer-2.5). Ignored when agent retrieval is off or the harness is openai."},"conversation_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Conversation Id","description":"Caller-supplied conversation identifier, threaded through for retrieval tracing. Does not affect caching or result content."},"llm_config":{"anyOf":[{"$ref":"#/components/schemas/LLMConfig"},{"type":"null"}],"description":"Optional bring-your-own-key OpenAI-compatible LLM credentials. Flat {api_key, model, base_url} applies to both channels. Use models.{text,vision} for different model ids on the same endpoint, or text/vision objects for different endpoints. When omitted, server defaults are used."}},"type":"object","required":["query"],"title":"RetrievalQueryRequestV2","description":"v2 retrieval query request with optional BYOK LLM credentials."},"RetrievalQueryResponse":{"properties":{"namespace":{"type":"string","title":"Namespace"},"query":{"type":"string","title":"Query"},"router_used":{"type":"string","title":"Router Used"},"evidence":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Evidence","description":"Grouped evidence blocks. Each group starts with [E1] [§ source_file_name / parent_path]. Text and table HTML stay as text parts; images stay as image parts at their placeholder positions."},"evidence_text":{"type":"string","title":"Evidence Text","description":"DEPRECATED. Always empty. Knowhere no longer projects evidence into a string. Use evidence.","default":""},"answer_text":{"type":"string","title":"Answer Text","description":"DEPRECATED. Always empty; KNOWHERE no longer generates answers. Use evidence and synthesize answers downstream.","default":""},"referenced_chunks":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Referenced Chunks"},"results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Results","description":"Raw path chunks for debug. Content keeps placeholders; composed parts live on evidence."},"stop_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stop Reason"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason"},"decision_trace":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Decision Trace","description":"Per-step agentic retrieval trace. Each entry follows the observation/decision/result schema."}},"type":"object","required":["namespace","query","router_used"],"title":"RetrievalQueryResponse"},"RevokeAPIKeyRequest":{"properties":{"api_key_id":{"type":"string","title":"Api Key Id","description":"API key ID to revoke"}},"type":"object","required":["api_key_id"],"title":"RevokeAPIKeyRequest","description":"Request payload for revoking an API key."},"SecretCreateRequest":{"properties":{"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint","description":"Optional endpoint URL. If omitted, creates a default account secret."}},"type":"object","title":"SecretCreateRequest","description":"Request to create a new webhook secret."},"SecretFullResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Secret ID (ws_...)"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint","description":"Endpoint URL or null for default"},"secret_masked":{"type":"string","title":"Secret Masked","description":"Masked secret (whsec_****...)"},"status":{"type":"string","title":"Status","description":"'active' or 'revoked'"},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp (ISO 8601)"},"secret":{"type":"string","title":"Secret","description":"Secret value"}},"type":"object","required":["id","secret_masked","status","created_at","secret"],"title":"SecretFullResponse","description":"Webhook secret response with full value (creation only)."},"SecretListResponse":{"properties":{"secrets":{"items":{"$ref":"#/components/schemas/SecretResponse"},"type":"array","title":"Secrets"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["secrets","total"],"title":"SecretListResponse","description":"List of webhook secrets."},"SecretResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Secret ID (ws_...)"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint","description":"Endpoint URL or null for default"},"secret_masked":{"type":"string","title":"Secret Masked","description":"Masked secret (whsec_****...)"},"status":{"type":"string","title":"Status","description":"'active' or 'revoked'"},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp (ISO 8601)"}},"type":"object","required":["id","secret_masked","status","created_at"],"title":"SecretResponse","description":"Webhook secret response (masked)."},"StandardErrorObject":{"properties":{"code":{"type":"string","title":"Code","description":"Canonical error code (e.g., INVALID_ARGUMENT, INTERNAL_ERROR)"},"message":{"type":"string","title":"Message","description":"Human-readable error message"},"request_id":{"type":"string","title":"Request Id","description":"Original request ID for tracing"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details (violations, retry_after, etc.)"}},"type":"object","required":["code","message","request_id"],"title":"StandardErrorObject","description":"Standard error object for embedded error pattern.\n\nReuses the same structure as synchronous API errors,\nenabling clients to use the same error handling logic\nfor both sync and async (job) errors."},"UsageStatsResponse":{"properties":{"period":{"type":"string","title":"Period"},"total_credits_used":{"type":"number","title":"Total Credits Used"},"api_calls_count":{"type":"integer","title":"Api Calls Count"},"success_rate":{"type":"number","title":"Success Rate"},"average_response_time":{"type":"number","title":"Average Response Time"},"top_endpoints":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Endpoints"}},"type":"object","required":["period","total_credits_used","api_calls_count","success_rate","average_response_time","top_endpoints"],"title":"UsageStatsResponse","description":"Usage-statistics response."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WebhookConfig":{"properties":{"url":{"type":"string","title":"Url","description":"Webhook callback URL"}},"type":"object","required":["url"],"title":"WebhookConfig","description":"Webhook configuration."},"WebhookLogList":{"properties":{"logs":{"items":{"$ref":"#/components/schemas/WebhookLogResponse"},"type":"array","title":"Logs","description":"List of log entries"},"total":{"type":"integer","title":"Total","description":"Total count in this page"},"page":{"type":"integer","title":"Page","description":"Current page number"},"page_size":{"type":"integer","title":"Page Size","description":"Page size"}},"type":"object","required":["logs","total","page","page_size"],"title":"WebhookLogList","description":"Paginated list of webhook delivery logs."},"WebhookLogResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Log ID"},"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"webhook_url":{"type":"string","title":"Webhook Url","description":"Webhook URL"},"attempt_number":{"type":"integer","title":"Attempt Number","description":"Attempt number (1-6)"},"request_payload":{"additionalProperties":true,"type":"object","title":"Request Payload","description":"Request payload sent to webhook"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signature","description":"HMAC signature"},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key","description":"Idempotency key"},"response_status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response Status Code","description":"HTTP response status code"},"response_body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Body","description":"Response body (truncated)"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Error message if request failed"},"duration_ms":{"type":"integer","title":"Duration Ms","description":"Request duration in milliseconds","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when attempt was made"}},"type":"object","required":["id","job_id","webhook_url","attempt_number","request_payload","created_at"],"title":"WebhookLogResponse","description":"Webhook delivery attempt log entry."},"WebhookTriggerRequest":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Job ID to trigger webhook for"}},"type":"object","required":["job_id"],"title":"WebhookTriggerRequest","description":"Request to manually trigger a webhook."},"WebhookTriggerResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"Whether the webhook was delivered successfully"},"status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status Code","description":"HTTP status code from target server"},"response_body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Body","description":"Response body from target server"},"duration_ms":{"type":"integer","title":"Duration Ms","description":"Request duration in milliseconds"},"delivery_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Id","description":"Delivery log ID for reference"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Error message if request failed"}},"type":"object","required":["success","duration_ms"],"title":"WebhookTriggerResponse","description":"Response from manual webhook trigger."}}},"servers":[{"url":"/api"}]}