{"openapi":"3.1.0","info":{"title":"Pivot Backend API","version":"1.0.0","description":"Endpoint catalogue for the Pivot modular-monolith backend. Generated from the zod schemas in `common/dtos/**`. Each module is a separate Firebase Cloud Function — base URL differs per module. In local dev all modules run under `http://127.0.0.1:5001/{project}/us-central1/{moduleName}`."},"servers":[{"url":"/","description":"Same origin (per-module function)"}],"tags":[{"name":"sales"},{"name":"integrations"},{"name":"companies"},{"name":"roles"},{"name":"schedule"},{"name":"employees"},{"name":"attendance"},{"name":"payroll"},{"name":"applicants"},{"name":"posts"},{"name":"chat"},{"name":"ai-memory"},{"name":"documents"},{"name":"calculator","description":"Deterministic arithmetic primitive used by the AI service."},{"name":"requests","description":"Shift requests: swap, replace, emergency, dayOff, availabilities."},{"name":"pos-sync","description":"POS roster sync — pull employees from Clover, Lightspeed, Veloce, etc., and link to Pivot employees."},{"name":"onboarding","description":"AI-led new-owner onboarding session state."},{"name":"docs","description":"This OpenAPI spec + Scalar UI."},{"name":"auth","description":"Authentication, password reset, signup, and invitation flows. Public + authenticated + admin tiers."},{"name":"integration-engine","description":"Generic integration plugin sync engine (connect/disconnect, manual sync, OpenTable partner flow). Distinct from the `integrations` tag, which is the catalog + status surface."}],"components":{"schemas":{},"parameters":{}},"paths":{"/sales":{"get":{"tags":["sales"],"summary":"List sales for a date range","description":"Returns per-bucket sales data. Fast path reads SalesActual; supplying employeeId/positionId/role/posSource switches to the invoice-level path.","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"startDate","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"endDate","in":"query"},{"schema":{"type":"string","enum":["daily","weekly","monthly"],"default":"daily"},"required":false,"name":"groupBy","in":"query"},{"schema":{"type":"string","enum":["full","morning","evening"],"default":"full"},"required":false,"name":"period","in":"query"},{"schema":{"type":"string","pattern":"^\\d{1,2}-\\d{1,2}$"},"required":false,"name":"hours","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["morningSales","totalSales","eveningSales","customerCount","perHour","tips","ratio"]}},"required":false,"name":"fields","in":"query"},{"schema":{"type":"boolean","default":false},"required":false,"name":"excludeEmptyDays","in":"query"},{"schema":{"type":"boolean","default":true},"required":false,"name":"includeSummary","in":"query"},{"schema":{"type":"string","enum":["auto","salesActual","invoices"],"default":"auto"},"required":false,"name":"source","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"employeeId","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"positionId","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"role","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["clover","cloverApiKey","veloce","maitred","lightspeed","cluster","myr","givex"]}},"required":false,"name":"posSource","in":"query"},{"schema":{"type":"boolean","default":true},"required":false,"name":"excludeRefunds","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/integrations":{"get":{"tags":["integrations"],"summary":"Overview (catalog + active state) per category","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/integrations/available":{"get":{"tags":["integrations"],"summary":"Catalog of available integrations","parameters":[{"schema":{"type":"string","enum":["pos","payroll","reservation"]},"required":false,"name":"category","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/integrations/available/{category}":{"get":{"tags":["integrations"],"summary":"Catalog filtered by category","parameters":[{"schema":{"type":"string","enum":["pos","payroll","reservation"]},"required":true,"name":"category","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/integrations/status":{"get":{"tags":["integrations"],"summary":"Active integrations for a company","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"string","enum":["pos","payroll","reservation"]},"required":false,"name":"category","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/integrations/{category}/{slug}":{"get":{"tags":["integrations"],"summary":"Single integration detail","parameters":[{"schema":{"type":"string","enum":["pos","payroll","reservation"]},"required":true,"name":"category","in":"path"},{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/companies/{id}":{"get":{"tags":["companies"],"summary":"Full company profile","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"patch":{"tags":["companies"],"summary":"Update profile (allow-listed)","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":"string"},"address":{"type":"string"},"city":{"type":"string"},"phone":{"type":"string"},"phoneCode":{"type":"string"},"email":{"type":"string","format":"email"},"domain":{"type":["string","null"]},"location":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"]},"locations":{"type":"object","additionalProperties":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"required":["lat","lng"]}},"image":{"type":["string","null"]},"imageSize":{"type":"string","enum":["cover","contain"]},"industry":{"type":["string","null"]},"timezone":{"type":"string"},"timezoneCityId":{"type":"string"},"weekStartingDay":{"type":"integer","minimum":0,"maximum":6},"timeFormat":{"type":"string","enum":["12h","24h"]},"payrollStartingDay":{"type":"integer","minimum":0,"maximum":6},"defaultDuration":{"type":"integer","exclusiveMinimum":0},"betweenShifts":{"type":"integer","minimum":0},"maxDayHours":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"boolean","enum":[false]}]},"recurrentShiftsGap":{"type":"integer","minimum":0},"excludeBreaks":{"type":"boolean"},"generationFormat":{"type":"string","enum":["standard","seniority"]},"breaks":{"type":"object","additionalProperties":{"type":"object","properties":{"hours":{"type":"number"},"length":{"type":"number"}},"required":["hours","length"]}},"daysStructure":{"type":"object","additionalProperties":{}},"employeesOrder":{"type":"array","items":{"type":"string"}},"roleOrders":{"type":"object","additionalProperties":{"type":"number"}},"createdByOnboarding":{"type":"boolean"},"onboardingCompleted":{"type":"boolean"},"hasAccessToAttendance":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/companies/{id}/settings":{"get":{"tags":["companies"],"summary":"Full CompanySettings","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"patch":{"tags":["companies"],"summary":"Update settings (allow-listed)","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"attendanceBreaksEnabled":{"type":"boolean"},"attendanceActivationDate":{"type":"string"},"conflictsDetectionEnabled":{"type":"boolean"},"weatherApiEnabled":{"type":"boolean"},"enableShiftSplitting":{"type":"boolean"},"hasCaterer":{"type":"boolean"},"hasAccessToLaborCost":{"type":"boolean"},"generationPriority":{"type":"string","enum":["longer-shifts","period-start","chronological"]},"maxHoursPerWeek":{"type":"number","exclusiveMinimum":0},"morningPeriodEnd":{"type":"integer","minimum":0},"dayChangeTime":{"type":"integer","minimum":0,"maximum":86400},"aiAgentEnabled":{"type":"boolean"},"aiAgentPersona":{"type":"string"},"isPayrollTabsEnabled":{"type":"boolean"},"timezoneCityId":{"type":"string"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/companies/{id}/policies":{"get":{"tags":["companies"],"summary":"Employee-facing policies (merged)","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"patch":{"tags":["companies"],"summary":"Update policies (split-write)","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"employeeInteractionGroup":{"type":"boolean"},"employeeInteractionMessages":{"type":"boolean"},"employeeInteractionWorkWith":{"type":"boolean"},"employeesCanSeeShiftEndTimes":{"type":"boolean"},"isGeolocationEnabled":{"type":"boolean"},"hideFinancialInfoFromManagers":{"type":"boolean"},"hideTipsFromManagers":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/roles":{"get":{"tags":["roles"],"summary":"List roles (positions)","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"boolean","default":false},"required":false,"name":"includeArchived","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"post":{"tags":["roles"],"summary":"Create role","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"priority":{"type":"integer","default":0},"type":{"type":"string","enum":["BOH","FOH","MNG"]},"rate":{"type":"number","minimum":0,"default":0},"additionalSalary":{"type":"number","minimum":0},"includedInLaborCost":{"type":"boolean"},"subRoles":{"type":"object","additionalProperties":{"type":"object","properties":{"name":{"type":"string","minLength":1},"acronym":{"type":"string"},"color":{"type":"string"},"priority":{"type":"integer"},"description":{"type":"string"},"archived":{"type":"boolean"}},"required":["name","priority"]},"default":{}}},"required":["name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/roles/{roleId}":{"patch":{"tags":["roles"],"summary":"Update role","parameters":[{"schema":{"type":"string"},"required":true,"name":"roleId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"priority":{"type":"integer"},"type":{"type":"string","enum":["BOH","FOH","MNG"]},"rate":{"type":"number","minimum":0},"additionalSalary":{"type":"number","minimum":0},"includedInLaborCost":{"type":"boolean"},"subRoles":{"type":"object","additionalProperties":{"type":"object","properties":{"name":{"type":"string","minLength":1},"acronym":{"type":"string"},"color":{"type":"string"},"priority":{"type":"integer"},"description":{"type":"string"},"archived":{"type":"boolean"}},"required":["name","priority"]}}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"delete":{"tags":["roles"],"summary":"Soft-archive role","parameters":[{"schema":{"type":"string"},"required":true,"name":"roleId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/shifts":{"get":{"tags":["schedule"],"summary":"List shifts in a date range","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"startDate","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"endDate","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"employeeId","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"positionId","in":"query"},{"schema":{"type":"boolean","default":true},"required":false,"name":"includeManual","in":"query"},{"schema":{"type":"boolean","default":false},"required":false,"name":"includeDraft","in":"query"},{"schema":{"type":"string"},"required":false,"name":"scheduleId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"post":{"tags":["schedule"],"summary":"Create draft shift (legacy)","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/shifts/user-shifts":{"get":{"tags":["schedule"],"summary":"Current user's shifts","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/shifts/{id}":{"put":{"tags":["schedule"],"summary":"Replace a shift (conflict-checked)","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"date","in":"query"},{"schema":{"type":"string","enum":["published","manual","draft"],"default":"published"},"required":false,"name":"mode","in":"query"},{"schema":{"type":"string","minLength":1},"required":true,"name":"employeeId","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"positionId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"subRoleId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"scheduleId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1439},"end":{"type":["integer","null"],"minimum":0,"maximum":1439},"positionId":{"type":"string","minLength":1},"employeeId":{"type":"string","minLength":1},"subRoleId":{"type":"string"},"note":{"type":"string"},"onHold":{"type":"boolean"}},"required":["start","end"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"delete":{"tags":["schedule"],"summary":"Remove a shift","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"date","in":"query"},{"schema":{"type":"string","enum":["published","manual","draft"],"default":"published"},"required":false,"name":"mode","in":"query"},{"schema":{"type":"string","minLength":1},"required":true,"name":"employeeId","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"positionId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"subRoleId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"scheduleId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/companies/{id}/schedule-template":{"get":{"tags":["schedule"],"summary":"Read daysStructure","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"patch":{"tags":["schedule"],"summary":"Merge day-by-day (untouched days preserved)","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"daysStructure":{"type":"object","additionalProperties":{"type":"object","properties":{"morning":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1439},"revenue":{"type":"number"},"perClient":{"type":"number"}},"additionalProperties":false},"evening":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1439},"revenue":{"type":"number"},"perClient":{"type":"number"}},"additionalProperties":false},"shifts":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1439},"end":{"type":"integer","minimum":0,"maximum":1439},"key":{"type":"string"}},"required":["start","end"],"additionalProperties":{"type":"object","properties":{"required":{"type":"integer","minimum":0},"hold":{"type":"integer","minimum":0}},"additionalProperties":false}}}}},"additionalProperties":false}}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees":{"get":{"tags":["employees"],"summary":"List employees","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"archived","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"role","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"post":{"tags":["employees"],"summary":"Create employee","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"surname":{"type":"string","minLength":1},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"phoneCode":{"type":"string"},"address":{"type":"string"},"city":{"type":"string"},"avatar":{"type":"string"},"locale":{"type":"string"},"emergencyContact":{"type":"string"},"emergencyPhone":{"type":"string"},"emergencyPhoneCode":{"type":"string"},"hiring":{"anyOf":[{"type":"number"},{"type":"string"}]},"bornDate":{"anyOf":[{"type":"number"},{"type":"string"}]},"positions":{"type":"array","items":{"type":"object","properties":{"categoryId":{"type":"string","minLength":1},"subcategoryId":{"type":"string","minLength":1}},"required":["categoryId","subcategoryId"]},"default":[]},"availabilities":{"type":"object","properties":{"maxHoursInWeek":{"type":"integer","minimum":0,"maximum":168},"minHoursInWeek":{"type":"integer","minimum":0,"maximum":168},"maxDaysPerWeek":{"type":"integer","minimum":0,"maximum":7},"Monday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Tuesday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Wednesday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Thursday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Friday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Saturday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Sunday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}}},"additionalProperties":{}},"salary":{"type":"number","minimum":0},"additionalSalary":{"type":"object","additionalProperties":{"type":"number","minimum":0}},"createdByPivotAiAgent":{"type":"boolean"},"employeeType":{"type":"string","enum":["fulltime","parttime","casual"]},"employeeNumber":{"type":"string"},"importSource":{"type":"string"},"rateRegular":{"type":"number","minimum":0},"rateOvertime":{"type":"number","minimum":0}},"required":["name","surname"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/me":{"get":{"tags":["employees"],"summary":"Resolve current user to employee record","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{id}":{"get":{"tags":["employees"],"summary":"Get employee","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"patch":{"tags":["employees"],"summary":"Update profile (allow-listed)","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"surname":{"type":"string","minLength":1},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"phoneCode":{"type":"string"},"address":{"type":"string"},"city":{"type":"string"},"avatar":{"type":"string"},"locale":{"type":"string"},"emergencyContact":{"type":"string"},"emergencyPhone":{"type":"string"},"emergencyPhoneCode":{"type":"string"},"hiring":{"anyOf":[{"type":"number"},{"type":"string"}]},"bornDate":{"anyOf":[{"type":"number"},{"type":"string"}]},"salary":{"type":"number","minimum":0}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"delete":{"tags":["employees"],"summary":"Soft-archive","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/batch":{"post":{"tags":["employees"],"summary":"Bulk create","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"employees":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"surname":{"type":"string","minLength":1},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"phoneCode":{"type":"string"},"address":{"type":"string"},"city":{"type":"string"},"avatar":{"type":"string"},"locale":{"type":"string"},"emergencyContact":{"type":"string"},"emergencyPhone":{"type":"string"},"emergencyPhoneCode":{"type":"string"},"hiring":{"anyOf":[{"type":"number"},{"type":"string"}]},"bornDate":{"anyOf":[{"type":"number"},{"type":"string"}]},"positions":{"type":"array","items":{"type":"object","properties":{"categoryId":{"type":"string","minLength":1},"subcategoryId":{"type":"string","minLength":1}},"required":["categoryId","subcategoryId"]},"default":[]},"availabilities":{"type":"object","properties":{"maxHoursInWeek":{"type":"integer","minimum":0,"maximum":168},"minHoursInWeek":{"type":"integer","minimum":0,"maximum":168},"maxDaysPerWeek":{"type":"integer","minimum":0,"maximum":7},"Monday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Tuesday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Wednesday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Thursday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Friday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Saturday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Sunday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}}},"additionalProperties":{}},"salary":{"type":"number","minimum":0},"additionalSalary":{"type":"object","additionalProperties":{"type":"number","minimum":0}},"createdByPivotAiAgent":{"type":"boolean"},"employeeType":{"type":"string","enum":["fulltime","parttime","casual"]},"employeeNumber":{"type":"string"},"importSource":{"type":"string"},"rateRegular":{"type":"number","minimum":0},"rateOvertime":{"type":"number","minimum":0}},"required":["name","surname"]},"minItems":1,"maxItems":500}},"required":["employees"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{id}/invite":{"post":{"tags":["employees"],"summary":"Send (or resend) invitation","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{id}/availability":{"get":{"tags":["employees"],"summary":"Weekly availability","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"put":{"tags":["employees"],"summary":"Replace availability","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"maxHoursInWeek":{"type":"integer","minimum":0,"maximum":168},"minHoursInWeek":{"type":"integer","minimum":0,"maximum":168},"maxDaysPerWeek":{"type":"integer","minimum":0,"maximum":7},"Monday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Tuesday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Wednesday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Thursday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Friday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Saturday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}},"Sunday":{"type":"object","properties":{"allDay":{"type":"boolean"},"priority":{"type":"integer"},"shift1":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]},"shift2":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}},"required":["start","end"]}},"additionalProperties":{}}},"additionalProperties":{}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{id}/days-off":{"get":{"tags":["employees"],"summary":"List approved days off","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":false,"name":"startDate","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":false,"name":"endDate","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"post":{"tags":["employees"],"summary":"Approve a day off","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"reason":{"type":"string"},"type":{"type":"string","enum":["allDay","morning","evening","custom"]},"customHours":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440}}},"requestId":{"type":"string"},"acceptedBy":{"type":"string"}},"required":["date"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{id}/days-off/{date}":{"delete":{"tags":["employees"],"summary":"Remove a day off","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"date","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{id}/rates":{"get":{"tags":["employees"],"summary":"Get rates","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"patch":{"tags":["employees"],"summary":"Update rates","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"salary":{"type":"number","minimum":0},"additionalSalary":{"type":"object","additionalProperties":{"type":"number","minimum":0}}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{id}/positions":{"get":{"tags":["employees"],"summary":"Get positions","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"put":{"tags":["employees"],"summary":"Replace positions","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"positions":{"type":"array","items":{"type":"object","properties":{"categoryId":{"type":"string","minLength":1},"subcategoryId":{"type":"string","minLength":1}},"required":["categoryId","subcategoryId"]}}},"required":["positions"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{id}/integration-ids":{"get":{"tags":["employees"],"summary":"Get POS mappings","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"patch":{"tags":["employees"],"summary":"Update POS mappings (null clears)","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"acombaId":{"type":["string","null"]},"cloverId":{"type":["string","null"]},"cloverApiKeyId":{"type":["string","null"]},"clusterId":{"type":["string","null"]},"customId":{"type":["string","null"]},"customEmplNumber":{"type":["string","null"]},"employerDId":{"type":["string","null"]},"givexId":{"type":["string","null"]},"lightspeedId":{"type":["string","null"]},"maitreDId":{"type":["string","null"]},"myrId":{"type":["string","null"]},"nethrisId":{"type":["string","null"]},"payrollId":{"type":["string","null"]},"powerpayId":{"type":["string","null"]},"veloceId":{"type":["string","null"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/attendance":{"get":{"tags":["attendance"],"summary":"List punches in range","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"startDate","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"endDate","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"employeeId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/attendance/summary":{"get":{"tags":["attendance"],"summary":"Per-employee rollup","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"startDate","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"endDate","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"employeeId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/attendance/punches":{"post":{"tags":["attendance"],"summary":"Add manual punch","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"employeeId":{"type":"string","minLength":1},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":["integer","null"],"minimum":0,"maximum":1440},"positionId":{"type":"string"},"subpositionId":{"type":"string"},"rate":{"type":"number","minimum":0},"additionalSalary":{"type":"number","minimum":0},"type":{"type":"string","enum":["hourly","yearly"]},"isConfirmed":{"type":"boolean"},"cashTips":{"type":"number","minimum":0},"notes":{"type":"string","maxLength":1000},"breaks":{"type":"object","additionalProperties":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440},"isPaid":{"type":"boolean"}},"required":["start","end"],"additionalProperties":false}},"clockInSource":{"type":"string","enum":["mobile","web","manual"],"default":"manual"},"clockOutSource":{"type":"string","enum":["mobile","web","manual"]}},"required":["employeeId","date","start"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/attendance/punches/batch":{"post":{"tags":["attendance"],"summary":"Bulk manual punches","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"punches":{"type":"array","items":{"type":"object","properties":{"employeeId":{"type":"string","minLength":1},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":["integer","null"],"minimum":0,"maximum":1440},"positionId":{"type":"string"},"subpositionId":{"type":"string"},"rate":{"type":"number","minimum":0},"additionalSalary":{"type":"number","minimum":0},"type":{"type":"string","enum":["hourly","yearly"]},"isConfirmed":{"type":"boolean"},"cashTips":{"type":"number","minimum":0},"notes":{"type":"string","maxLength":1000},"breaks":{"type":"object","additionalProperties":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440},"isPaid":{"type":"boolean"}},"required":["start","end"],"additionalProperties":false}},"clockInSource":{"type":"string","enum":["mobile","web","manual"],"default":"manual"},"clockOutSource":{"type":"string","enum":["mobile","web","manual"]}},"required":["employeeId","date","start"],"additionalProperties":false},"minItems":1,"maxItems":200}},"required":["punches"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/attendance/punches/{id}":{"patch":{"tags":["attendance"],"summary":"Edit punch (allow-listed)","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"date","in":"query"},{"schema":{"type":"string","minLength":1},"required":true,"name":"employeeId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":["integer","null"],"minimum":0,"maximum":1440},"startOriginal":{"type":"integer","minimum":0,"maximum":1440},"endOriginal":{"type":["integer","null"],"minimum":0,"maximum":1440},"positionId":{"type":"string"},"subpositionId":{"type":"string"},"rate":{"type":"number","minimum":0},"additionalSalary":{"type":"number","minimum":0},"isConfirmed":{"type":"boolean"},"cashTips":{"type":"number","minimum":0},"notes":{"type":"string","maxLength":1000},"breaks":{"type":"object","additionalProperties":{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":1440},"end":{"type":"integer","minimum":0,"maximum":1440},"isPaid":{"type":"boolean"}},"required":["start","end"],"additionalProperties":false}},"clockInSource":{"type":"string","enum":["mobile","web","manual"]},"clockOutSource":{"type":"string","enum":["mobile","web","manual"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"delete":{"tags":["attendance"],"summary":"Remove punch","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"date","in":"query"},{"schema":{"type":"string","minLength":1},"required":true,"name":"employeeId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/payroll/settings":{"get":{"tags":["payroll"],"summary":"Payroll settings","description":"Returns the effective payroll configuration: global defaults from `AttendanceSettings/{companyId}` merged with the most recent period override from `PayrollPeriodSettings/{companyId}/{effectiveFromDate}`. Use PATCH /payroll/settings to update.","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"patch":{"tags":["payroll"],"summary":"Update payroll settings","description":"Allow-listed PATCH over merged settings. The handler routes each field to the correct underlying path (global vs current period) based on field ownership — callers write one flat object and the server splits the writes.","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payrollFrequency":{"type":"string","enum":["weekly","biweekly"]},"payrollStartingDay":{"type":"string","minLength":1},"employeeOrder":{"type":"string","enum":["surname","name","employee-number","custom"]},"customEmployeeOrderIds":{"type":"array","items":{"type":"string"}},"exportWeekMode":{"type":"string","enum":["weekly","biweekly"]},"dailySortOrder":{"type":"object","properties":{"field":{"type":"string","enum":["name","shift","hours","salary","role"]},"direction":{"type":"string","enum":["asc","desc"]}},"required":["field","direction"],"additionalProperties":false},"roundingTime":{"anyOf":[{"type":"number","enum":[1]},{"type":"number","enum":[5]},{"type":"number","enum":[10]},{"type":"number","enum":[15]}]},"overtimeCalculationMode":{"type":"string","enum":["not-calculated","weekly","biweekly","weekly-x0.5"]},"snapToScheduleThreshold":{"anyOf":[{"type":"number","enum":[1]},{"type":"number","enum":[5]}]},"lateClockOutThreshold":{"anyOf":[{"type":"number","enum":[15]},{"type":"number","enum":[30]},{"type":"number","enum":[60]}]},"flagUnder3Hours":{"type":"boolean"},"tippingStructure":{"type":"string","enum":["individual-tipping","team-tipping","no-tips"]},"tipsPaymentMethod":{"type":"string","enum":["payroll","cash"]},"tipOutFrequency":{"type":"string","enum":["daily","weekly","biweekly"]},"rolesReceiveTipOuts":{"type":"boolean"},"declareCashTips":{"type":"boolean"},"tipOutGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"roles":{"type":"array","items":{"type":"string","minLength":1}},"percentage":{"type":"number","minimum":0,"maximum":100}},"required":["id","name","roles","percentage"],"additionalProperties":false}},"breakIntervals":{"type":"array","items":{"type":"object","properties":{"shiftHours":{"type":"number","minimum":0},"breaks":{"type":"array","items":{"type":"object","properties":{"breakLength":{"type":"number","minimum":0},"paid":{"type":"boolean"}},"required":["breakLength","paid"],"additionalProperties":false}}},"required":["shiftHours","breaks"],"additionalProperties":false}},"additionalTimePaid":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/payroll/tip-outs":{"get":{"tags":["payroll"],"summary":"List tip-out distribution entries","description":"Returns tip-out distribution entries (how gross tips are split across back-of-house roles — fixed amounts, role bonuses, sales-based splits). For the tip DOLLARS earned per employee/day, use `GET /sales` (it returns a `tips` field per bucket and supports `employeeId` filtering).","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"startDate","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"endDate","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"employeeId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/payroll/issues":{"get":{"tags":["payroll"],"summary":"List payroll anomalies","description":"Runs four anomaly rules over the date range and returns a flat list of flagged issues: (1) missing clock-out / unclosed shifts, (2) negative net hours after rounding, (3) long shifts exceeding the company threshold, (4) punches outside the assigned shift window. Each entry includes the rule name, employeeId, date, and explanation string.","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"startDate","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":true,"name":"endDate","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"employeeId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/applicants":{"get":{"tags":["applicants"],"summary":"List company applicants","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"string","enum":["unsorted","interview","pastInterview","direct","disapproved","hired"]},"required":false,"name":"status","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/applicants/{id}":{"get":{"tags":["applicants"],"summary":"Get applicant","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"patch":{"tags":["applicants"],"summary":"Update status (allow-listed)","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["unsorted","interview","pastInterview","direct","disapproved","hired"]},"processReason":{"type":"string","maxLength":500},"note":{"type":"string","maxLength":1000}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/posts":{"get":{"tags":["posts"],"summary":"List feed posts","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"post":{"tags":["posts"],"summary":"Create post (atomic post + notification)","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","minLength":1,"maxLength":10000},"markup":{"type":"string","maxLength":20000},"byCompany":{"type":"boolean","default":true},"pinned":{"type":"boolean","default":false},"images":{"type":"array","items":{"type":"string","format":"uri"}},"attachments":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["name","url"],"additionalProperties":false}},"mentions":{"type":"array","items":{"type":"string"}},"visibility":{"type":"object","properties":{"type":{"type":"string","enum":["everyone","roles","employees"]},"roleIds":{"type":"array","items":{"type":"string"}},"employeeIds":{"type":"array","items":{"type":"string"}}},"required":["type"],"additionalProperties":false}},"required":["content"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/posts/{id}":{"get":{"tags":["posts"],"summary":"Get post","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"patch":{"tags":["posts"],"summary":"Update post","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","minLength":1,"maxLength":10000},"markup":{"type":"string","maxLength":20000},"pinned":{"type":"boolean"},"byCompany":{"type":"boolean"},"images":{"type":"array","items":{"type":"string","format":"uri"}},"attachments":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["name","url"],"additionalProperties":false}},"mentions":{"type":"array","items":{"type":"string"}},"visibility":{"type":"object","properties":{"type":{"type":"string","enum":["everyone","roles","employees"]},"roleIds":{"type":"array","items":{"type":"string"}},"employeeIds":{"type":"array","items":{"type":"string"}}},"required":["type"],"additionalProperties":false}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"delete":{"tags":["posts"],"summary":"Remove post","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/chats":{"get":{"tags":["chat"],"summary":"Current user's conversations","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/chats/{chatId}":{"get":{"tags":["chat"],"summary":"Get chat","parameters":[{"schema":{"type":"string"},"required":true,"name":"chatId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/chats/{chatId}/messages":{"get":{"tags":["chat"],"summary":"List messages","parameters":[{"schema":{"type":"string"},"required":true,"name":"chatId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"post":{"tags":["chat"],"summary":"Send message","parameters":[{"schema":{"type":"string"},"required":true,"name":"chatId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":10000},"replyToId":{"type":"string"},"files":{"type":"array","items":{"type":"string","format":"uri"}},"images":{"type":"array","items":{"type":"string","format":"uri"}}},"required":["text"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/chats/{chatId}/messages/{messageId}":{"patch":{"tags":["chat"],"summary":"Edit message (sender-only)","parameters":[{"schema":{"type":"string"},"required":true,"name":"chatId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"messageId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":10000}},"required":["text"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"delete":{"tags":["chat"],"summary":"Soft-delete message (sender-only)","parameters":[{"schema":{"type":"string"},"required":true,"name":"chatId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"messageId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/ai-memory/company-profile":{"get":{"tags":["ai-memory"],"summary":"Learned facts","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"patch":{"tags":["ai-memory"],"summary":"Update learned facts","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"typicalRevenue":{"anyOf":[{"type":"string"},{"type":"number"}]},"laborBudget":{"anyOf":[{"type":"string"},{"type":"number"}]},"peakDays":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]},"watchedEmployees":{"type":"array","items":{"type":"string"}},"hasPatio":{"anyOf":[{"type":"boolean"},{"type":"string"}]},"location":{"type":"string"},"notesAppend":{"type":"string","minLength":1,"maxLength":5000},"notes":{"type":"object","additionalProperties":{"type":"string"}}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/ai-memory/user-rules":{"get":{"tags":["ai-memory"],"summary":"List manager rules","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"post":{"tags":["ai-memory"],"summary":"Create rule","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"rule":{"type":"string","minLength":1,"maxLength":2000},"enabled":{"type":"boolean","default":true}},"required":["rule"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/ai-memory/user-rules/{ruleId}":{"patch":{"tags":["ai-memory"],"summary":"Update rule","parameters":[{"schema":{"type":"string"},"required":true,"name":"ruleId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"rule":{"type":"string","minLength":1,"maxLength":2000},"enabled":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"delete":{"tags":["ai-memory"],"summary":"Delete rule","parameters":[{"schema":{"type":"string"},"required":true,"name":"ruleId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/ai-memory/cron-tasks":{"get":{"tags":["ai-memory"],"summary":"List scheduled reports","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"post":{"tags":["ai-memory"],"summary":"Schedule report (RTDB + Temporal)","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":1000},"schedule":{"type":"string","minLength":1,"maxLength":200},"cronExpression":{"type":"string","pattern":"^(\\S+\\s+){4,6}\\S+$"},"reportQuery":{"type":"string","minLength":1,"maxLength":2000},"enabled":{"type":"boolean","default":true},"ownerUserId":{"type":"string"}},"required":["title","schedule","cronExpression","reportQuery"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/ai-memory/cron-tasks/{taskId}":{"patch":{"tags":["ai-memory"],"summary":"Update scheduled report","parameters":[{"schema":{"type":"string"},"required":true,"name":"taskId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":1000},"schedule":{"type":"string","minLength":1,"maxLength":200},"cronExpression":{"type":"string","pattern":"^(\\S+\\s+){4,6}\\S+$"},"reportQuery":{"type":"string","minLength":1,"maxLength":2000},"enabled":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"delete":{"tags":["ai-memory"],"summary":"Delete scheduled report","parameters":[{"schema":{"type":"string"},"required":true,"name":"taskId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{employeeId}/documents":{"get":{"tags":["documents"],"summary":"List employee documents (drafts + finalized)","parameters":[{"schema":{"type":"string"},"required":true,"name":"employeeId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":"boolean","default":true},"required":false,"name":"includeDrafts","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{employeeId}/documents/drafts":{"post":{"tags":["documents"],"summary":"Register draft metadata (pre-uploaded URL)","parameters":[{"schema":{"type":"string"},"required":true,"name":"employeeId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500},"url":{"type":"string","format":"uri"},"createdByPivotAiAgent":{"type":"boolean","default":false},"placeholderCoordinates":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"textWidth":{"type":"number"},"textHeight":{"type":"number"}},"required":["x","y","width","height"],"additionalProperties":false}},"required":["key","position"],"additionalProperties":false}},"isEmployeeDocument":{"type":"boolean","default":true},"positionId":{"type":"string","minLength":1},"requiresSignature":{"type":"boolean","default":true}},"required":["title","url"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{employeeId}/documents/upload":{"post":{"tags":["documents"],"summary":"Upload PDF + register draft","description":"Multipart/form-data body with fields: `file` (PDF bytes, required), `title` (required), `isEmployeeDocument`, `positionId` (if role-scoped), `requiresSignature`, `placeholderCoordinates` (JSON string), `createdByPivotAiAgent`. The handler uploads the PDF to Firebase Storage and registers the resulting URL as a draft in one call.","parameters":[{"schema":{"type":"string"},"required":true,"name":"employeeId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500},"createdByPivotAiAgent":{"type":"boolean","default":false},"placeholderCoordinates":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"textWidth":{"type":"number"},"textHeight":{"type":"number"}},"required":["x","y","width","height"],"additionalProperties":false}},"required":["key","position"],"additionalProperties":false}},"isEmployeeDocument":{"type":"boolean","default":true},"positionId":{"type":"string","minLength":1},"requiresSignature":{"type":"boolean","default":true}},"required":["title"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{employeeId}/documents/drafts/{docKey}":{"delete":{"tags":["documents"],"summary":"Remove draft","parameters":[{"schema":{"type":"string"},"required":true,"name":"employeeId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"docKey","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{employeeId}/documents/drafts/{docKey}/finalize":{"post":{"tags":["documents"],"summary":"Promote draft to signed document","parameters":[{"schema":{"type":"string"},"required":true,"name":"employeeId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"docKey","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"positionId":{"type":"string"},"isEmployeeDocument":{"type":"boolean","default":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/employees/{employeeId}/documents/{docKey}":{"delete":{"tags":["documents"],"summary":"Remove signed document","parameters":[{"schema":{"type":"string"},"required":true,"name":"employeeId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"docKey","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/calculate":{"post":{"tags":["calculator"],"summary":"Deterministic arithmetic primitive","description":"Single-op arithmetic so the AI never hallucinates numbers. Returns `{ success: true, data: { result } }` on valid input, `{ success: false, error }` on bad ops. Used internally by the AI service's `calculate` tool.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"op":{"type":"string","enum":["add","sub","mul","div","percent_of","cap_max","floor_min","round","divide_equally","sum","avg","min","max","abs","neg"]},"a":{"type":"number"},"b":{"type":"number"},"max":{"type":"number"},"min":{"type":"number"},"decimals":{"type":"integer","minimum":0,"maximum":10},"total":{"type":"number"},"n":{"type":"integer","minimum":1},"values":{"type":"array","items":{"type":"number"}}},"required":["op"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/requests":{"get":{"tags":["requests"],"summary":"List shift requests for a company","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"companyId","in":"query"},{"schema":{"type":["string","null"],"minLength":1},"required":false,"name":"employeeId","in":"query"},{"schema":{"type":"string","enum":["employee","manager","company"],"default":"employee"},"required":false,"name":"view","in":"query"},{"schema":{"type":["string","null"],"enum":["pending","declined","approved","rejected","cancelled","expired",null]},"required":false,"name":"status","in":"query"},{"schema":{"type":["string","null"],"enum":["swap","replace","emergency","dayOff","availabilities",null]},"required":false,"name":"type","in":"query"},{"schema":{"type":["integer","null"],"minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["string","null"]},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}},"post":{"tags":["requests"],"summary":"Create a request (swap / replace / emergency / dayOff / availabilities)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["swap","replace","emergency","dayOff","availabilities"]},"companyId":{"type":"string","minLength":1},"requesterId":{"type":"string","minLength":1}},"required":["type","companyId","requesterId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/requests/{id}":{"put":{"tags":["requests"],"summary":"Update a request (approve / decline / cancel / defer / etc.)","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1},"companyId":{"type":"string","minLength":1},"employeeId":{"type":"string","minLength":1},"action":{"type":"string","enum":["candidate_accept","candidate_decline","approve","reject","cancel","defer","revert"]},"shiftOpponent":{"type":["object","null"],"properties":{"date":{"type":"string"},"day":{"type":["number","null"]},"positionId":{"type":"string"},"shiftName":{"type":"string"},"subpositionId":{"type":"string"},"shift":{"type":"object","properties":{"end":{"type":["number","null"]},"onHold":{"type":["boolean","null"]},"start":{"type":"number"},"uid":{"type":["string","null"]}},"required":["start"]}},"required":["date","positionId","shiftName","subpositionId","shift"]},"reason":{"type":["string","null"]},"chosenCandidateId":{"type":["string","null"],"minLength":1}},"required":["requestId","companyId","employeeId","action"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/sync-pos-employees":{"post":{"tags":["pos-sync"],"summary":"Sync POS roster (live fetch + cache + auto-match)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"posType":{"type":"string","enum":["clover-oauth","clover-api-key","lightspeed","veloce","givex","maitre-d","myr"]},"companyId":{"type":"string","minLength":1},"forceAutoMatch":{"type":"boolean"}},"required":["posType","companyId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/load-cached-pos-employees":{"post":{"tags":["pos-sync"],"summary":"Read cached POS roster (no live fetch)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"posType":{"type":"string","enum":["clover-oauth","clover-api-key","lightspeed","veloce","givex","maitre-d","myr"]},"companyId":{"type":"string","minLength":1}},"required":["posType","companyId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/link-pos-employee":{"post":{"tags":["pos-sync"],"summary":"Link a Pivot employee to a POS employee record","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"posType":{"type":"string","enum":["clover-oauth","clover-api-key","lightspeed","veloce","givex","maitre-d","myr"]},"companyId":{"type":"string","minLength":1},"pivotEmployeeId":{"type":"string","minLength":1},"posEmployeeId":{"type":"string","minLength":1}},"required":["posType","companyId","pivotEmployeeId","posEmployeeId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/create-bulk-pos-employees":{"post":{"tags":["pos-sync"],"summary":"Create Pivot employees from unmatched POS rows","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"posType":{"type":"string","enum":["clover-oauth","clover-api-key","lightspeed","veloce","givex","maitre-d","myr"]},"companyId":{"type":"string","minLength":1},"posEmployeeIds":{"type":"array","items":{"type":"string","minLength":1},"minItems":1}},"required":["posType","companyId","posEmployeeIds"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/get-pivot-employees":{"post":{"tags":["pos-sync"],"summary":"List Pivot employees as match candidates","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"companyId":{"type":"string","minLength":1}},"required":["companyId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/onboarding/session/{userId}":{"get":{"tags":["onboarding"],"summary":"Create or fetch the onboarding session state for a user","description":"Optional `x-user-token` header carries the caller token used to bootstrap the session container.","parameters":[{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/onboarding/session/{userId}/complete":{"post":{"tags":["onboarding"],"summary":"Mark onboarding complete and return next-step guidance","parameters":[{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"companyId":{"type":"string"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/openapi.json":{"get":{"tags":["docs"],"summary":"OpenAPI 3.1 spec (this document, served as JSON)","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/docs":{"get":{"tags":["docs"],"summary":"Interactive API reference (Scalar UI)","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/":{"get":{"tags":["docs"],"summary":"Alias for /docs","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/send-reset-link":{"post":{"tags":["auth"],"summary":"Send password-reset email (public, no auth required)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/verify-authorization-code":{"post":{"tags":["auth"],"summary":"Verify the out-of-band code from a reset/invitation email (public)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/accept-head-office-invitation":{"post":{"tags":["auth"],"summary":"Accept a head-office invitation (public, code-based)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1}},"required":["token"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/accept-employee-invitation":{"post":{"tags":["auth"],"summary":"Accept an employee invitation (public, code-based)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1}},"required":["token"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/init-session":{"post":{"tags":["auth"],"summary":"Initialize an authenticated session (sets custom claims)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["web","mobile"],"default":"web"},"companyId":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/signup":{"post":{"tags":["auth"],"summary":"Complete signup for the authenticated user","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["web","mobile"],"default":"web"},"locale":{"type":["string","null"],"enum":["en","fr","en-ca","fr-ca",null]}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/setup-password":{"post":{"tags":["auth"],"summary":"Set or change the password for the authenticated user","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":6},"confirmPassword":{"type":"string","minLength":6},"source":{"type":"string","enum":["web","mobile"],"default":"web"}},"required":["password","confirmPassword"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/send-head-office-invitation":{"post":{"tags":["auth"],"summary":"Send a head-office invitation email","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"companyId":{"type":"string","minLength":1}},"required":["email","companyId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/revoke-head-office-invitation":{"post":{"tags":["auth"],"summary":"Revoke a pending head-office invitation","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"accessId":{"type":"string","minLength":1},"companyId":{"type":"string","minLength":1}},"required":["accessId","companyId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/send-employee-invitation":{"post":{"tags":["auth"],"summary":"Send (or resend) an employee invitation email","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"employeeId":{"type":"string","minLength":1},"companyId":{"type":"string","minLength":1}},"required":["employeeId","companyId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/admin/impersonate":{"post":{"tags":["auth"],"summary":"Admin-only: impersonate another user (returns a custom token)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"companyId":{"type":"string"}},"required":["companyId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/health":{"get":{"tags":["integration-engine"],"summary":"Integration-engine health probe","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/connection/connect":{"post":{"tags":["integration-engine"],"summary":"Connect a company to an integration provider","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","minLength":1},"companyId":{"type":"string","minLength":1}},"required":["provider","companyId"],"additionalProperties":{}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/connection/disconnect":{"post":{"tags":["integration-engine"],"summary":"Disconnect a company from an integration provider","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"companyId":{"type":"string","minLength":1},"domain":{"type":"string","minLength":1}},"required":["companyId","domain"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/connection/reconnect":{"post":{"tags":["integration-engine"],"summary":"Refresh credentials for an existing integration connection","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"companyId":{"type":"string","minLength":1},"domain":{"type":"string","minLength":1}},"required":["companyId","domain"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/connection/status/{companyId}":{"get":{"tags":["integration-engine"],"summary":"Per-company connection + recent-sync status","parameters":[{"schema":{"type":"string"},"required":true,"name":"companyId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/sync":{"post":{"tags":["integration-engine"],"summary":"Trigger a manual sync for one plugin","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"companyId":{"type":"string","minLength":1},"domain":{"type":"string","minLength":1},"provider":{"type":"string","minLength":1},"plugin":{"type":"string","minLength":1},"params":{"type":"object","properties":{"forceSince":{"type":"integer","minimum":0},"retrySliceIds":{"type":"array","items":{"type":"string","minLength":1}}}}},"required":["companyId","domain","provider","plugin"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/integration-id/{companyId}":{"post":{"tags":["integration-engine"],"summary":"Get the company's public integration ID","parameters":[{"schema":{"type":"string"},"required":true,"name":"companyId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/partner-ingest/{provider}":{"post":{"tags":["integration-engine"],"summary":"Partner webhook ingest endpoint","parameters":[{"schema":{"type":"string"},"required":true,"name":"provider","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/opentable/restaurants/verify-identifier/{partner_identifier}":{"post":{"tags":["integration-engine"],"summary":"Verify an OpenTable partner identifier","parameters":[{"schema":{"type":"string"},"required":true,"name":"partner_identifier","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/opentable/restaurants/activate":{"post":{"tags":["integration-engine"],"summary":"Activate an OpenTable restaurant","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"rid":{"type":"string","minLength":1},"partner_identifier":{"type":"string","minLength":1}},"required":["rid","partner_identifier"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}},"/opentable/restaurants/deactivate":{"post":{"tags":["integration-engine"],"summary":"Deactivate an OpenTable restaurant","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"rid":{"type":"string","minLength":1}},"required":["rid"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}},"required":["success"]}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"},"code":{"type":"string"}},"required":["success","error","code"]}}}}}}}},"webhooks":{}}