{"openapi":"3.1.0","info":{"title":"OmniAPI Dashboard","description":"Unified BI + data API for multi-provider fleet & recruitment analytics (Glovo/Arara recruitment funnel + Wolt courier fleet).\n\n**What it serves:** a SQLite read-model kept fresh by headless sync jobs, exposed as sub-second REST endpoints plus a natural-language BI layer and an OpenAI-compatible chat endpoint.\n\n**Authentication:**\n- Data & BI endpoints (`/v1/health`, `/v1/leads/*`, `/v1/analytics/*`, `/v1/wolt/*`, `/v1/bi/*`, `/v1/chat/completions`) require `X-API-Key` (or `Authorization: Bearer <key>` for the OpenAI-compatible endpoint).\n- Admin endpoints (`/v1/admin/*`) require separate `X-Admin-Key`.\n\n**Quickstart:**\n```bash\ncurl https://arara-api.s1.apppartner.pl/v1/health -H 'X-API-Key: <your-key>'\n```\n","contact":{"name":"OmniAPI Dashboard"},"version":"1.1.0"},"paths":{"/v1/health":{"get":{"tags":["public"],"summary":"Health check & token status","operationId":"health_v1_health_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflows":{"get":{"tags":["public"],"summary":"List configured workflows","operationId":"list_workflows_v1_workflows_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowInfo"},"title":"Response List Workflows V1 Workflows Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me":{"get":{"tags":["auth"],"summary":"Current authenticated user info","operationId":"auth_me_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/leads/t4":{"get":{"tags":["public"],"summary":"List T4 available leads","operationId":"list_t4_v1_leads_t4_get","parameters":[{"name":"workflow","in":"query","required":true,"schema":{"type":"string","description":"Workflow key","examples":["3pl_already_assigned"],"title":"Workflow"},"description":"Workflow key"},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"City filter (e.g. 'gv-pl:kraków')","title":"City"},"description":"City filter (e.g. 'gv-pl:kraków')"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":1000,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/leads/by-stage":{"get":{"tags":["public"],"summary":"List leads at any stage","operationId":"list_by_stage_v1_leads_by_stage_get","parameters":[{"name":"workflow","in":"query","required":true,"schema":{"type":"string","description":"Workflow key","title":"Workflow"},"description":"Workflow key"},{"name":"stage","in":"query","required":true,"schema":{"type":"string","description":"Stage alias: T0/T1/T2/T3/T4/T5/HIRED/FAILED","examples":["T3"],"title":"Stage"},"description":"Stage alias: T0/T1/T2/T3/T4/T5/HIRED/FAILED"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Stage state filter","title":"State"},"description":"Stage state filter"},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":1000,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/leads/sync-snapshot":{"get":{"tags":["public"],"summary":"Grouped workflow/stage lead snapshot for external synchronization","operationId":"sync_snapshot_v1_leads_sync_snapshot_get","parameters":[{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional workflow key filter","title":"Workflow"},"description":"Optional workflow key filter"},{"name":"stages","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated stage aliases. Default: T0,T1,T2,T3,T4,T5","title":"Stages"},"description":"Comma-separated stage aliases. Default: T0,T1,T2,T3,T4,T5"},{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","description":"When stages is omitted, also include HIRED and FAILED","default":false,"title":"Include Archived"},"description":"When stages is omitted, also include HIRED and FAILED"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Stage state filter for live stages; not applied to HIRED/FAILED","default":"available","title":"State"},"description":"Stage state filter for live stages; not applied to HIRED/FAILED"},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional city filter","title":"City"},"description":"Optional city filter"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional ISO date/datetime lower bound; client-side filter","title":"Since"},"description":"Optional ISO date/datetime lower bound; client-side filter"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional ISO date/datetime upper bound; client-side filter","title":"Until"},"description":"Optional ISO date/datetime upper bound; client-side filter"},{"name":"per_stage_limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":500,"title":"Per Stage Limit"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncSnapshotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/leads/search":{"get":{"tags":["public"],"summary":"Search leads by email/phone/name (across all stages)","operationId":"search_leads_v1_leads_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Email, phone or name fragment","title":"Q"},"description":"Email, phone or name fragment"},{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional workflow filter","title":"Workflow"},"description":"Optional workflow filter"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/leads/id/{applicant_id}":{"get":{"tags":["public"],"summary":"Get full lead detail (stages, labels, appointments)","operationId":"get_lead_detail_v1_leads_id__applicant_id__get","parameters":[{"name":"applicant_id","in":"path","required":true,"schema":{"type":"string","description":"Applicant UUID","title":"Applicant Id"},"description":"Applicant UUID"},{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workflow to search within (auto-detect if omitted)","title":"Workflow"},"description":"Workflow to search within (auto-detect if omitted)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/leads/stats":{"get":{"tags":["public"],"summary":"T4 available stats per workflow and city","operationId":"stats_t4_v1_leads_stats_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/stats/funnel":{"get":{"tags":["public"],"summary":"Full funnel counts per stage per workflow","operationId":"stats_funnel_v1_stats_funnel_get","parameters":[{"name":"max_age_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Only count leads with created_at within last N days","title":"Max Age Days"},"description":"Only count leads with created_at within last N days"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/leads/hired":{"get":{"tags":["public"],"summary":"List leads HIRED on a given date (UTC)","operationId":"hired_on_date_v1_leads_hired_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD or 'today' / 'yesterday'","examples":["yesterday"],"title":"Date"},"description":"YYYY-MM-DD or 'today' / 'yesterday'"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HiredOnDateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/leads/failed":{"get":{"tags":["public"],"summary":"List leads FAILED on a given date (UTC)","operationId":"failed_on_date_v1_leads_failed_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD or 'today' / 'yesterday'","title":"Date"},"description":"YYYY-MM-DD or 'today' / 'yesterday'"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HiredOnDateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/leads/hired-range":{"get":{"tags":["public"],"summary":"List leads HIRED in a date range (UTC), with optional city/workflow filter","operationId":"hired_in_range_v1_leads_hired_range_get","parameters":[{"name":"since","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD inclusive (or 'today'/'yesterday')","examples":["2026-05-18"],"title":"Since"},"description":"YYYY-MM-DD inclusive (or 'today'/'yesterday')"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD inclusive (default: today)","title":"Until"},"description":"YYYY-MM-DD inclusive (default: today)"},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive substring match on city name","examples":["warszawa"],"title":"City"},"description":"Case-insensitive substring match on city name"},{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Restrict to one workflow key","title":"Workflow"},"description":"Restrict to one workflow key"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HiredRangeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/leads/failed-range":{"get":{"tags":["public"],"summary":"List leads FAILED in a date range (UTC), with optional city/workflow filter","operationId":"failed_in_range_v1_leads_failed_range_get","parameters":[{"name":"since","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD inclusive (or 'today'/'yesterday')","title":"Since"},"description":"YYYY-MM-DD inclusive (or 'today'/'yesterday')"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD inclusive (default: today)","title":"Until"},"description":"YYYY-MM-DD inclusive (default: today)"},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HiredRangeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dashboard":{"get":{"tags":["public"],"summary":"Aggregated dashboard snapshot","operationId":"dashboard_v1_dashboard_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/leads/push":{"post":{"tags":["actions"],"summary":"Push a single applicant to HIRED (from T3 or T4)","operationId":"push_single_v1_leads_push_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushSingleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/leads/push-batch":{"post":{"tags":["actions"],"summary":"Push a batch of T3/T4 leads to HIRED","operationId":"push_batch_v1_leads_push_batch_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushBatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushBatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/config":{"get":{"tags":["admin"],"summary":"[ADMIN] Inspect current credentials state","operationId":"admin_config_v1_admin_config_get","parameters":[{"name":"x-admin-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/cf-auth":{"post":{"tags":["admin"],"summary":"[ADMIN] Update CF_Authorization cookie","operationId":"admin_update_cf_auth_v1_admin_cf_auth_post","parameters":[{"name":"x-admin-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CFAuthUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/tokens":{"post":{"tags":["admin"],"summary":"[ADMIN] Update Arara tokens (any subset)","operationId":"admin_update_tokens_v1_admin_tokens_post","parameters":[{"name":"x-admin-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokensUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/refresh":{"post":{"tags":["admin"],"summary":"[ADMIN] Force-refresh Arara access token via refresh_token","operationId":"admin_force_refresh_v1_admin_refresh_post","parameters":[{"name":"x-admin-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/sweep":{"post":{"tags":["admin"],"summary":"[ADMIN] Trigger immediate sweep (T4+T3→HIRED, labels + push) for all workflows","operationId":"admin_trigger_sweep_v1_admin_sweep_post","parameters":[{"name":"x-admin-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/sweep-status":{"get":{"tags":["admin"],"summary":"[ADMIN] Last background sweep result","operationId":"admin_sweep_status_v1_admin_sweep_status_get","parameters":[{"name":"x-admin-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/backfill":{"post":{"tags":["admin"],"summary":"[ADMIN] Full snapshot load of every workflow×stage into the analytics DB","operationId":"admin_backfill_v1_admin_backfill_post","parameters":[{"name":"x-admin-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/synthesize-events":{"post":{"tags":["admin"],"summary":"[ADMIN] Seed the transition log from the current snapshot (idempotent)","description":"Create an entry stage_event for every lead lacking one, so time-based\nmetrics (HIRED by day, inflow, dwell, trends) reflect existing leads.","operationId":"admin_synthesize_events_v1_admin_synthesize_events_post","parameters":[{"name":"x-admin-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/labels/policy":{"get":{"tags":["public"],"summary":"Show required-label policy per stage and configured UUID mappings","operationId":"labels_policy_v1_labels_policy_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelsPolicyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/labels/ensure":{"post":{"tags":["actions"],"summary":"Apply required labels for a given stage to a batch of applicants (rate-limited)","operationId":"labels_ensure_v1_labels_ensure_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelsEnsureRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelsEnsureResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/labels/ensure/by-stage":{"post":{"tags":["actions"],"summary":"Ensure labels for ALL applicants currently at given stage (workflow-scoped)","description":"Bulk-label all leads at a given stage. Uses paginated GET then batch PATCH with 3s delay.\n\nReturns same aggregate shape as POST /v1/labels/ensure.","operationId":"labels_ensure_by_stage_v1_labels_ensure_by_stage_post","parameters":[{"name":"workflow","in":"query","required":true,"schema":{"type":"string","description":"Workflow key","title":"Workflow"},"description":"Workflow key"},{"name":"stage","in":"query","required":true,"schema":{"type":"string","description":"Stage alias T2/T3/T4","title":"Stage"},"description":"Stage alias T2/T3/T4"},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":1000,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/labels/waiting-list":{"post":{"tags":["actions"],"summary":"Apply ONLY the waiting-list label (decoupled from push/sweep)","operationId":"labels_waiting_list_v1_labels_waiting_list_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitingListRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitingListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/reports/leads":{"get":{"tags":["public"],"summary":"Aggregated leads report by current stage over a date range","operationId":"leads_report_v1_reports_leads_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"type":"string","description":"YYYY-MM-DD inclusive lower bound on created_at","default":"2026-01-01","title":"Since"},"description":"YYYY-MM-DD inclusive lower bound on created_at"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD inclusive upper bound (default: today UTC)","title":"Until"},"description":"YYYY-MM-DD inclusive upper bound (default: today UTC)"},{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Restrict to one workflow key","title":"Workflow"},"description":"Restrict to one workflow key"},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive substring match on city name","title":"City"},"description":"Case-insensitive substring match on city name"},{"name":"stages","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma list of stage aliases (default: all)","title":"Stages"},"description":"Comma list of stage aliases (default: all)"},{"name":"state","in":"query","required":false,"schema":{"type":"string","description":"Stage state for live stages; 'all' counts every state (matches funnel). Not applied to HIRED/FAILED","default":"available","title":"State"},"description":"Stage state for live stages; 'all' counts every state (matches funnel). Not applied to HIRED/FAILED"},{"name":"include_leads","in":"query","required":false,"schema":{"type":"boolean","description":"If false, omit the leads array; return only aggregates","default":true,"title":"Include Leads"},"description":"If false, omit the leads array; return only aggregates"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadsReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/overview":{"get":{"tags":["public"],"summary":"One-shot dashboard payload (DB-backed)","description":"Everything the dashboard needs in a single call: funnel, hired counters,\nhired_by_day (for time chart), dwell, insights, sync status, freshness. Cheap (all read-model SQL).","operationId":"analytics_overview_v1_analytics_overview_get","parameters":[{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to one workflow key","title":"Workflow"},"description":"Filter to one workflow key"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/funnel":{"get":{"tags":["public"],"summary":"Funnel counts (T0..T5 + HIRED/FAILED split)","operationId":"analytics_funnel_v1_analytics_funnel_get","parameters":[{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/hired":{"get":{"tags":["public"],"summary":"HIRED counts today/yesterday/7d/30d/total (or a custom date range)","description":"Default: HIRED presets (today/yesterday/7d/30d/total). When `since` (and\noptionally `until`) is supplied, returns the HIRED count for that exact range\nplus a per-day breakdown — powers the dashboard's custom date-range picker.","operationId":"analytics_hired_v1_analytics_hired_get","parameters":[{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom range start YYYY-MM-DD (inclusive, UTC). When set, returns range count instead of presets.","title":"Since"},"description":"Custom range start YYYY-MM-DD (inclusive, UTC). When set, returns range count instead of presets."},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom range end YYYY-MM-DD (inclusive, UTC). Defaults to today when only `since` is given.","title":"Until"},"description":"Custom range end YYYY-MM-DD (inclusive, UTC). Defaults to today when only `since` is given."},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/hired-by-day":{"get":{"tags":["public"],"summary":"HIRED per day (by first_visited_at) from the beginning or limited window","operationId":"analytics_hired_by_day_v1_analytics_hired_by_day_get","parameters":[{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to one workflow key","title":"Workflow"},"description":"Filter to one workflow key"},{"name":"days_back","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":3650,"minimum":1},{"type":"null"}],"description":"Limit to last N days (omit for full history from start)","title":"Days Back"},"description":"Limit to last N days (omit for full history from start)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/leads":{"get":{"tags":["analytics"],"summary":"Paginated lead list (who is at which stage) — JSON or CSV","operationId":"analytics_leads_v1_analytics_leads_get","parameters":[{"name":"stage","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Stage alias filter (T0..T5/HIRED/FAILED)","title":"Stage"},"description":"Stage alias filter (T0..T5/HIRED/FAILED)"},{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name/email substring search","title":"Q"},"description":"Name/email substring search"},{"name":"hide_not_interested","in":"query","required":false,"schema":{"type":"boolean","description":"Exclude leads labelled 'Not Interested' (requirement A2)","default":false,"title":"Hide Not Interested"},"description":"Exclude leads labelled 'Not Interested' (requirement A2)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort field: name|email|city|workflow|stage|created_at|stage_entered_at","title":"Sort By"},"description":"Sort field: name|email|city|workflow|stage|created_at|stage_entered_at"},{"name":"order","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"desc","title":"Order"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","default":"json","title":"Format"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/insights":{"get":{"tags":["public"],"summary":"Bottlenecks, trends, potential + headline bullets","operationId":"analytics_insights_v1_analytics_insights_get","parameters":[{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/sync":{"get":{"tags":["public"],"summary":"Sync status: last sync, moves, last outage, history","operationId":"analytics_sync_v1_analytics_sync_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/snapshot":{"get":{"tags":["public"],"summary":"Lead snapshot counts (DB-backed, <1s)","operationId":"analytics_snapshot_v1_analytics_snapshot_get","parameters":[{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to one workflow key","title":"Workflow"},"description":"Filter to one workflow key"},{"name":"stage","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to one stage alias (T0..T5/HIRED/FAILED)","title":"Stage"},"description":"Filter to one stage alias (T0..T5/HIRED/FAILED)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/inflow":{"get":{"tags":["public"],"summary":"New leads per day (event-driven)","operationId":"analytics_inflow_v1_analytics_inflow_get","parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Window Days"}},{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive substring match on city","title":"City"},"description":"Case-insensitive substring match on city"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/conversion":{"get":{"tags":["public"],"summary":"Cohort conversion to HIRED","operationId":"analytics_conversion_v1_analytics_conversion_get","parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Window Days"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive substring match on city","title":"City"},"description":"Case-insensitive substring match on city"},{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/dwell":{"get":{"tags":["public"],"summary":"Average dwell time per stage (hours)","operationId":"analytics_dwell_v1_analytics_dwell_get","parameters":[{"name":"workflow","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/lead/{lead_id}/timeline":{"get":{"tags":["public"],"summary":"Per-lead stage timeline: when the lead entered each stage","description":"When did this lead enter each stage — the real timeline from Arara's\napplicant_stages (first_visited_at per stage).","operationId":"analytics_lead_timeline_v1_analytics_lead__lead_id__timeline_get","parameters":[{"name":"lead_id","in":"path","required":true,"schema":{"type":"string","title":"Lead Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bi/query":{"post":{"tags":["public"],"summary":"Ask an analytics question in natural language","operationId":"bi_query_v1_bi_query_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BIQueryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bi/metrics":{"get":{"tags":["public"],"summary":"List the metrics the BI assistant can answer","operationId":"bi_metrics_v1_bi_metrics_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bi/suggestions":{"get":{"tags":["public"],"summary":"Suggested chat topics for the BI assistant","operationId":"bi_suggestions_v1_bi_suggestions_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chat/completions":{"post":{"tags":["bi"],"summary":"OpenAI-compatible chat completions (BI pipeline)","operationId":"chat_completions_v1_chat_completions_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ChatCompletionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ChatCompletionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/overview":{"get":{"tags":["public"],"summary":"Wolt fleet KPIs (couriers, deliveries, avg TAR/TCR/DPH)","operationId":"wolt_overview_v1_wolt_overview_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Aggregate from this day (YYYY-MM-DD) using daily history","title":"Since"},"description":"Aggregate from this day (YYYY-MM-DD) using daily history"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"...up to this day (YYYY-MM-DD)","title":"Until"},"description":"...up to this day (YYYY-MM-DD)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/couriers":{"get":{"tags":["wolt"],"summary":"Per-courier performance (deliveries, online hours, TAR, TCR, DPH, earnings)","operationId":"wolt_couriers_v1_wolt_couriers_get","parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only couriers with deliveries or online time","default":false,"title":"Active Only"},"description":"Only couriers with deliveries or online time"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name/email search","title":"Q"},"description":"Name/email search"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Aggregate from this day (YYYY-MM-DD)","title":"Since"},"description":"Aggregate from this day (YYYY-MM-DD)"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"...up to this day (YYYY-MM-DD)","title":"Until"},"description":"...up to this day (YYYY-MM-DD)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort field: deliveries|tar|tcr|dph|online_hours|earnings_total_cents|cash_balance_cents|name","title":"Sort By"},"description":"Sort field: deliveries|tar|tcr|dph|online_hours|earnings_total_cents|cash_balance_cents|name"},{"name":"order","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","description":"Sort order","default":"desc","title":"Order"},"description":"Sort order"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","description":"Response format","default":"json","title":"Format"},"description":"Response format"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/couriers/first-delivery":{"get":{"tags":["wolt"],"summary":"Per-courier first ride (pierwszy przejazd) with OD–DO date filter","operationId":"wolt_first_delivery_v1_wolt_couriers_first_delivery_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"OD — only couriers whose first ride is on/after this date (YYYY-MM-DD)","title":"Since"},"description":"OD — only couriers whose first ride is on/after this date (YYYY-MM-DD)"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"DO — only couriers whose first ride is on/before this date (YYYY-MM-DD)","title":"Until"},"description":"DO — only couriers whose first ride is on/before this date (YYYY-MM-DD)"},{"name":"courier_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Restrict to one courier id","title":"Courier Id"},"description":"Restrict to one courier id"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name/email search","title":"Q"},"description":"Name/email search"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","description":"Response format","default":"json","title":"Format"},"description":"Response format"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/couriers/{courier_id}":{"get":{"tags":["public"],"summary":"Single courier — full metrics + per-day trend","operationId":"wolt_courier_detail_v1_wolt_couriers__courier_id__get","parameters":[{"name":"courier_id","in":"path","required":true,"schema":{"type":"integer","title":"Courier Id"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Trend window start (YYYY-MM-DD)","title":"Since"},"description":"Trend window start (YYYY-MM-DD)"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Trend window end (YYYY-MM-DD)","title":"Until"},"description":"Trend window end (YYYY-MM-DD)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/onboarding/funnel":{"get":{"tags":["wolt"],"summary":"Onboarding funnel counts (Waiting/Error/Draft/Blocked)","operationId":"wolt_onboarding_funnel_v1_wolt_onboarding_funnel_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/onboarding/errors":{"get":{"tags":["wolt"],"summary":"Onboarding failures grouped by root cause + fix suggestion","operationId":"wolt_onboarding_errors_v1_wolt_onboarding_errors_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/onboarding/errors/list":{"get":{"tags":["wolt"],"summary":"Raw failing onboarding rows (JSON or CSV)","operationId":"wolt_onboarding_errors_list_v1_wolt_onboarding_errors_list_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by error bucket code (phone_conflict|already_approved|auth_error|blocked|other)","title":"Code"},"description":"Filter by error bucket code (phone_conflict|already_approved|auth_error|blocked|other)"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","default":"json","title":"Format"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/deliveries-by-day":{"get":{"tags":["wolt"],"summary":"Fleet deliveries + online hours per day (trend)","operationId":"wolt_deliveries_by_day_v1_wolt_deliveries_by_day_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"From day (YYYY-MM-DD)","title":"Since"},"description":"From day (YYYY-MM-DD)"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"To day (YYYY-MM-DD)","title":"Until"},"description":"To day (YYYY-MM-DD)"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/onboarding/waiting-per-city":{"get":{"tags":["public"],"summary":"Leads waiting for activation, grouped by city (requirement B3)","operationId":"wolt_waiting_per_city_v1_wolt_onboarding_waiting_per_city_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/onboarding":{"get":{"tags":["wolt"],"summary":"Registration records (JSON or CSV)","operationId":"wolt_onboarding_v1_wolt_onboarding_get","parameters":[{"name":"status_label","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by panel label, e.g. 'Waiting for activation'","title":"Status Label"},"description":"Filter by panel label, e.g. 'Waiting for activation'"},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","default":"json","title":"Format"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/earnings-by-day":{"get":{"tags":["wolt"],"summary":"Fleet daily earnings + average order value (śr. wartość zamówienia)","operationId":"wolt_earnings_by_day_v1_wolt_earnings_by_day_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"From day (YYYY-MM-DD)","title":"Since"},"description":"From day (YYYY-MM-DD)"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"...to day (YYYY-MM-DD)","title":"Until"},"description":"...to day (YYYY-MM-DD)"},{"name":"courier_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Also return this courier's per-day earnings trend","title":"Courier Id"},"description":"Also return this courier's per-day earnings trend"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/courier-mapping":{"get":{"tags":["wolt"],"summary":"Courier id/name/email roster for matching couriers to the Wolt panel","operationId":"wolt_courier_mapping_v1_wolt_courier_mapping_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name/email search","title":"Q"},"description":"Name/email search"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","description":"Response format","default":"json","title":"Format"},"description":"Response format"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":2000,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wolt/onboarding/changes":{"get":{"tags":["wolt"],"summary":"Onboarding stage changes in an OD–DO date range (Glovo-parity, with last-change timestamp)","operationId":"wolt_onboarding_changes_v1_wolt_onboarding_changes_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"OD — only changes on/after this date (YYYY-MM-DD or full ISO timestamp)","title":"Since"},"description":"OD — only changes on/after this date (YYYY-MM-DD or full ISO timestamp)"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"DO — only changes on/before this date (YYYY-MM-DD or full ISO timestamp)","title":"Until"},"description":"DO — only changes on/before this date (YYYY-MM-DD or full ISO timestamp)"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by the status label the lead changed INTO (e.g. 'Waiting for activation')","title":"Status"},"description":"Filter by the status label the lead changed INTO (e.g. 'Waiting for activation')"},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive substring match on city","title":"City"},"description":"Case-insensitive substring match on city"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","description":"Response format","default":"json","title":"Format"},"description":"Response format"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AdminConfigResponse":{"properties":{"cf_authorization_present":{"type":"boolean","title":"Cf Authorization Present"},"cf_authorization_length":{"type":"integer","title":"Cf Authorization Length"},"arara_token_expires_in_sec":{"type":"integer","title":"Arara Token Expires In Sec"},"last_refresh_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Refresh Unix"},"api_keys_count":{"type":"integer","title":"Api Keys Count"}},"type":"object","required":["cf_authorization_present","cf_authorization_length","arara_token_expires_in_sec","api_keys_count"],"title":"AdminConfigResponse"},"BIQueryRequest":{"properties":{"question":{"type":"string","maxLength":500,"minLength":2,"title":"Question","examples":["Jaka konwersja w Warszawie w 30 dni?"]}},"type":"object","required":["question"],"title":"BIQueryRequest"},"CFAuthUpdate":{"properties":{"cf_authorization":{"type":"string","title":"Cf Authorization","description":"Fresh CF_Authorization cookie (JWT starting with 'eyJ...')"}},"type":"object","required":["cf_authorization"],"title":"CFAuthUpdate"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"version":{"type":"string","title":"Version"},"arara_token_expires_in_sec":{"type":"integer","title":"Arara Token Expires In Sec"},"tokens_valid_until":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tokens Valid Until"},"cf_authorization_present":{"type":"boolean","title":"Cf Authorization Present"},"cf_authorization_expires_in_sec":{"type":"integer","title":"Cf Authorization Expires In Sec","default":0},"workflows":{"items":{"type":"string"},"type":"array","title":"Workflows"},"last_token_sync_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Token Sync At"},"last_make_pull_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Make Pull At"},"last_sweep_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Sweep At"},"last_sweep_attempted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Sweep Attempted"},"container_uptime_s":{"type":"integer","title":"Container Uptime S"}},"type":"object","required":["ok","version","arara_token_expires_in_sec","cf_authorization_present","workflows","container_uptime_s"],"title":"HealthResponse"},"HiredOnDateLead":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"workflow":{"type":"string","title":"Workflow"},"approved_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approved At"},"when":{"type":"string","title":"When"}},"type":"object","required":["id","workflow","when"],"title":"HiredOnDateLead"},"HiredOnDateResponse":{"properties":{"date":{"type":"string","title":"Date"},"total":{"type":"integer","title":"Total"},"leads":{"items":{"$ref":"#/components/schemas/HiredOnDateLead"},"type":"array","title":"Leads"}},"type":"object","required":["date","total","leads"],"title":"HiredOnDateResponse"},"HiredRangeResponse":{"properties":{"since":{"type":"string","title":"Since"},"until":{"type":"string","title":"Until"},"city_filter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City Filter"},"workflow_filter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Filter"},"total":{"type":"integer","title":"Total"},"by_day":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Day"},"by_city":{"additionalProperties":{"type":"integer"},"type":"object","title":"By City"},"leads":{"items":{"$ref":"#/components/schemas/HiredOnDateLead"},"type":"array","title":"Leads"}},"type":"object","required":["since","until","total","by_day","by_city","leads"],"title":"HiredRangeResponse"},"LabelsEnsureRequest":{"properties":{"applicant_ids":{"items":{"type":"string"},"type":"array","maxItems":500,"minItems":1,"title":"Applicant Ids","description":"Applicant UUIDs to label"},"stage":{"type":"string","title":"Stage","description":"Stage alias (T2/T3/T4) — determines required labels","examples":["T4"]},"dry_run":{"type":"boolean","title":"Dry Run","description":"If true, just list what would be added (no PATCH)","default":false}},"type":"object","required":["applicant_ids","stage"],"title":"LabelsEnsureRequest"},"LabelsEnsureResponse":{"properties":{"stage":{"type":"string","title":"Stage"},"required_label_aliases":{"items":{"type":"string"},"type":"array","title":"Required Label Aliases"},"attempted":{"type":"integer","title":"Attempted"},"added":{"type":"integer","title":"Added"},"already_ok":{"type":"integer","title":"Already Ok"},"errors":{"type":"integer","title":"Errors"},"results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Results"}},"type":"object","required":["stage","required_label_aliases","attempted","added","already_ok","errors","results"],"title":"LabelsEnsureResponse"},"LabelsPolicyResponse":{"properties":{"required_by_stage":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Required By Stage"},"configured_uuids":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object","title":"Configured Uuids"}},"type":"object","required":["required_by_stage","configured_uuids"],"title":"LabelsPolicyResponse"},"Lead":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"landed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Landed At"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id"],"title":"Lead"},"LeadDetail":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"landed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Landed At"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"workflow":{"type":"string","title":"Workflow"},"stages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Stages"},"labels":{"items":{"type":"string"},"type":"array","title":"Labels"},"appointments":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Appointments"}},"type":"object","required":["id","workflow","stages","labels","appointments"],"title":"LeadDetail"},"LeadsReportResponse":{"properties":{"generated_at":{"type":"string","title":"Generated At"},"since":{"type":"string","title":"Since"},"until":{"type":"string","title":"Until"},"filters":{"additionalProperties":true,"type":"object","title":"Filters"},"total":{"type":"integer","title":"Total"},"hired_total":{"type":"integer","title":"Hired Total"},"truncated":{"type":"boolean","title":"Truncated"},"by_day":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Day"},"by_week":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Week"},"by_city":{"additionalProperties":{"type":"integer"},"type":"object","title":"By City"},"by_stage":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Stage"},"leads":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Leads"}},"type":"object","required":["generated_at","since","until","filters","total","hired_total","truncated","by_day","by_week","by_city","by_stage"],"title":"LeadsReportResponse"},"LeadsResponse":{"properties":{"workflow":{"type":"string","title":"Workflow"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"},"count":{"type":"integer","title":"Count"},"leads":{"items":{"$ref":"#/components/schemas/Lead"},"type":"array","title":"Leads"}},"type":"object","required":["workflow","count","leads"],"title":"LeadsResponse"},"PushBatchRequest":{"properties":{"workflow":{"type":"string","title":"Workflow","examples":["other_leads_pl"]},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City filter, e.g. 'gv-pl:kraków'","examples":["gv-pl:kraków"]},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit","description":"Max leads to push","examples":[10]},"dry_run":{"type":"boolean","title":"Dry Run","description":"If true, just list candidates without pushing","default":false},"from_stage":{"type":"string","title":"From Stage","description":"Source stage to push from. Allowed: T3, T4. Backend cascades forward to HIRED.","default":"T4","examples":["T4"]}},"type":"object","required":["workflow"],"title":"PushBatchRequest"},"PushBatchResponse":{"properties":{"workflow":{"type":"string","title":"Workflow"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"attempted":{"type":"integer","title":"Attempted"},"hired_verified":{"type":"integer","title":"Hired Verified"},"dry_run":{"type":"boolean","title":"Dry Run"},"results":{"items":{"$ref":"#/components/schemas/PushResult"},"type":"array","title":"Results"}},"type":"object","required":["workflow","attempted","hired_verified","dry_run","results"],"title":"PushBatchResponse"},"PushResult":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"http_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Http Status"},"ok":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ok"},"hired_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hired Verified"}},"type":"object","required":["id"],"title":"PushResult"},"PushSingleRequest":{"properties":{"workflow":{"type":"string","title":"Workflow","description":"Workflow key: 'other_leads_pl' or '3pl_already_assigned'","examples":["3pl_already_assigned"]},"applicant_id":{"type":"string","title":"Applicant Id","description":"UUID of the applicant","examples":["cd49c2d9-cc5d-4e1a-9aa4-4f027e154480"]},"from_stage":{"type":"string","title":"From Stage","description":"Source stage to push from. Allowed: T3, T4. Backend cascades forward to HIRED.","default":"T4","examples":["T4"]}},"type":"object","required":["workflow","applicant_id"],"title":"PushSingleRequest"},"SyncSnapshotResponse":{"properties":{"generated_at":{"type":"string","title":"Generated At"},"stages":{"items":{"type":"string"},"type":"array","title":"Stages"},"per_stage_limit":{"type":"integer","title":"Per Stage Limit"},"filters":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object","title":"Filters"},"workflows":{"additionalProperties":{"$ref":"#/components/schemas/SyncWorkflowSnapshot"},"type":"object","title":"Workflows"}},"type":"object","required":["generated_at","stages","per_stage_limit","filters","workflows"],"title":"SyncSnapshotResponse"},"SyncStageBucket":{"properties":{"count":{"type":"integer","title":"Count"},"leads":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Leads"}},"type":"object","required":["count","leads"],"title":"SyncStageBucket"},"SyncWorkflowSnapshot":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"stages":{"additionalProperties":{"$ref":"#/components/schemas/SyncStageBucket"},"type":"object","title":"Stages"}},"type":"object","required":["id","stages"],"title":"SyncWorkflowSnapshot"},"TokensUpdate":{"properties":{"access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token","description":"Fresh dhhToken from localStorage"},"refresh_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh Token","description":"Fresh refreshToken from localStorage"},"cf_authorization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cf Authorization","description":"Fresh CF_Authorization cookie"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key","description":"Fresh window.env.API_KEY if changed"}},"type":"object","title":"TokensUpdate"},"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"},"WaitingListRequest":{"properties":{"workflow":{"type":"string","title":"Workflow","description":"Workflow key","examples":["3pl_already_assigned"]},"stages":{"items":{"type":"string"},"type":"array","title":"Stages","description":"Allowed: T3 and/or T4"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"Optional city filter (substring on city name)"},"applicant_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Applicant Ids","description":"If provided, label exactly these IDs (ignores stages/city listing)"},"dry_run":{"type":"boolean","title":"Dry Run","description":"If true, return targets without patching","default":false}},"type":"object","required":["workflow"],"title":"WaitingListRequest"},"WaitingListResponse":{"properties":{"workflow":{"type":"string","title":"Workflow"},"stages":{"items":{"type":"string"},"type":"array","title":"Stages"},"dry_run":{"type":"boolean","title":"Dry Run"},"attempted":{"type":"integer","title":"Attempted"},"added":{"type":"integer","title":"Added"},"already_ok":{"type":"integer","title":"Already Ok"},"errors":{"type":"integer","title":"Errors"},"target_ids":{"items":{"type":"string"},"type":"array","title":"Target Ids"},"results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Results"}},"type":"object","required":["workflow","stages","dry_run","attempted","added","already_ok","errors","target_ids","results"],"title":"WaitingListResponse"},"WorkflowInfo":{"properties":{"key":{"type":"string","title":"Key"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"stage_t4":{"type":"string","title":"Stage T4"},"stage_hired":{"type":"string","title":"Stage Hired"}},"type":"object","required":["key","id","name","stage_t4","stage_hired"],"title":"WorkflowInfo"},"_ChatCompletionRequest":{"properties":{"model":{"type":"string","title":"Model","examples":["omniapi-bi"]},"messages":{"items":{"$ref":"#/components/schemas/_ChatMessage"},"type":"array","minItems":1,"title":"Messages"},"stream":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stream","default":false},"temperature":{"anyOf":[{"type":"number","maximum":2.0,"minimum":0.0},{"type":"null"}],"title":"Temperature"}},"type":"object","required":["model","messages"],"title":"_ChatCompletionRequest"},"_ChatCompletionResponse":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","title":"Object","default":"chat.completion"},"created":{"type":"integer","title":"Created"},"model":{"type":"string","title":"Model"},"choices":{"items":{"$ref":"#/components/schemas/_Choice"},"type":"array","title":"Choices"},"usage":{"$ref":"#/components/schemas/_Usage"}},"type":"object","required":["id","created","model","choices","usage"],"title":"_ChatCompletionResponse"},"_ChatMessage":{"properties":{"role":{"type":"string","title":"Role","examples":["user","assistant","system"]},"content":{"type":"string","minLength":1,"title":"Content"}},"type":"object","required":["role","content"],"title":"_ChatMessage"},"_Choice":{"properties":{"index":{"type":"integer","title":"Index","default":0},"message":{"$ref":"#/components/schemas/_ChoiceMessage"},"finish_reason":{"type":"string","title":"Finish Reason","default":"stop"}},"type":"object","required":["message"],"title":"_Choice"},"_ChoiceMessage":{"properties":{"role":{"type":"string","title":"Role","default":"assistant"},"content":{"type":"string","title":"Content"}},"type":"object","required":["content"],"title":"_ChoiceMessage"},"_Usage":{"properties":{"prompt_tokens":{"type":"integer","title":"Prompt Tokens","default":0},"completion_tokens":{"type":"integer","title":"Completion Tokens","default":0},"total_tokens":{"type":"integer","title":"Total Tokens","default":0}},"type":"object","title":"_Usage"}}},"tags":[{"name":"public","description":"Health, workflows, lead listing and stats (X-API-Key)"},{"name":"analytics","description":"Recruitment funnel BI: overview, funnel, hired, leads, insights"},{"name":"wolt","description":"Wolt fleet: overview, couriers, courier detail, onboarding (X-API-Key)"},{"name":"bi","description":"Natural-language BI: suggestions, query, metrics, OpenAI-compatible chat"},{"name":"actions","description":"Push leads through the funnel (X-API-Key, write scope)"},{"name":"admin","description":"Token / credential management (X-Admin-Key)"}]}