{"openapi":"3.1.0","info":{"title":"Contact Sync API","version":"1.0.0"},"paths":{"/{rest_of_path}":{"options":{"summary":" Any Options","operationId":"_any_options__rest_of_path__options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/android/contact-guardian/health":{"get":{"summary":"Guardian Health","operationId":"guardian_health_android_contact_guardian_health_get","parameters":[{"name":"X-Guardian-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Guardian-Key"}},{"name":"X-Guardian-Device","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Guardian-Device"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/contact-guardian/lookup":{"post":{"summary":"Guardian Lookup","operationId":"guardian_lookup_android_contact_guardian_lookup_post","parameters":[{"name":"X-Guardian-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Guardian-Key"}},{"name":"X-Guardian-Device","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Guardian-Device"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuardianLookupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/contact-guardian/lookup-batch":{"post":{"summary":"Guardian Lookup Batch","operationId":"guardian_lookup_batch_android_contact_guardian_lookup_batch_post","parameters":[{"name":"X-Guardian-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Guardian-Key"}},{"name":"X-Guardian-Device","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Guardian-Device"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuardianBatchLookupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/contact-guardian/reload":{"post":{"summary":"Guardian Reload","operationId":"guardian_reload_android_contact_guardian_reload_post","parameters":[{"name":"X-Guardian-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Guardian-Key"}},{"name":"X-Guardian-Device","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Guardian-Device"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/contact-guardian/sync":{"get":{"summary":"Guardian Mobile Sync","description":"Stream contacts.db to the single bound Guardian Android device.\n\nCursor is SQLite rowid, not OFFSET, so large databases remain efficient and\na phone can resume a partial sync without starting over.","operationId":"guardian_mobile_sync_android_contact_guardian_sync_get","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":750,"title":"Limit"}},{"name":"X-Guardian-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Guardian-Key"}},{"name":"X-Guardian-Device","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Guardian-Device"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer-visits/search":{"get":{"summary":"Customer Visits Search","operationId":"customer_visits_search_customer_visits_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":160,"description":"Customer name or phone number","title":"Q"},"description":"Customer name or phone number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"api_health_main","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/version":{"get":{"summary":"Version","operationId":"version_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/_routes":{"get":{"summary":" Routes","operationId":"_routes__routes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/whoami":{"get":{"summary":"Whoami","operationId":"whoami_whoami_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/proxy/echo":{"get":{"summary":"Proxy Echo","operationId":"proxy_echo_proxy_echo_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"summary":"Proxy Echo","operationId":"proxy_echo_proxy_echo_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Proxy Echo","operationId":"proxy_echo_proxy_echo_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"delete":{"summary":"Proxy Echo","operationId":"proxy_echo_proxy_echo_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"options":{"summary":"Proxy Echo","operationId":"proxy_echo_proxy_echo_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"patch":{"summary":"Proxy Echo","operationId":"proxy_echo_proxy_echo_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dedupe-table":{"post":{"tags":["dedupe"],"summary":"Dedupe Table","description":"✅ Branch-aware dedupe for:\n    branches/<branch>/table.db  (ctx.table_db)\n\nDedup key: last 8 digits of EACH phone number in phones field (non-digits removed).\nKeeps first seen (lowest id), deletes later duplicates.\nCreates a backup first in the same folder as table.db.","operationId":"dedupe_table_dedupe_table_post","parameters":[{"name":"vacuum","in":"query","required":false,"schema":{"type":"boolean","description":"Optional: run VACUUM after dedupe (slower)","default":false,"title":"Vacuum"},"description":"Optional: run VACUUM after dedupe (slower)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/legacy/table-log":{"get":{"tags":["table_log_legacy"],"summary":"Get Table Log Legacy","description":"✅ LEGACY endpoint:\n  GET /legacy/table-log\n\nReads: ctx.table_log (branches/<branch>/table_log.txt)\nReturns newest logs first.","operationId":"get_table_log_legacy_legacy_table_log_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/end-of-day":{"post":{"tags":["eod"],"summary":"End Of Day","operationId":"end_of_day_end_of_day_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/end-of-day/status":{"get":{"tags":["eod"],"summary":"End Of Day Status","operationId":"end_of_day_status_end_of_day_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/eod":{"get":{"tags":["eod"],"summary":"End Of Day Alias Get","operationId":"end_of_day_alias_get_eod_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["eod"],"summary":"End Of Day Alias Post","operationId":"end_of_day_alias_post_eod_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reservations/health":{"get":{"tags":["reservations"],"summary":"Health","operationId":"health_reservations_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reservations/tables":{"get":{"tags":["reservations"],"summary":"List Tables","operationId":"list_tables_reservations_tables_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response List Tables Reservations Tables Get"}}}}}}},"/reservations":{"get":{"tags":["reservations"],"summary":"List Reservations","operationId":"list_reservations_reservations_get","parameters":[{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"}},{"name":"from_ts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Ts"}},{"name":"to_ts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Ts"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReservationOut"},"title":"Response List Reservations Reservations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["reservations"],"summary":"Create Reservation","operationId":"create_reservation_reservations_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reservations/availability":{"get":{"tags":["reservations"],"summary":"Availability","operationId":"availability_reservations_availability_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}},{"name":"time","in":"query","required":true,"schema":{"type":"string","title":"Time"}},{"name":"window_min","in":"query","required":false,"schema":{"type":"integer","maximum":300,"minimum":15,"default":90,"title":"Window Min"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AvailabilityOut"},"title":"Response Availability Reservations Availability Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reservations/{rid}":{"get":{"tags":["reservations"],"summary":"Get Reservation","operationId":"get_reservation_reservations__rid__get","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","title":"Rid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["reservations"],"summary":"Patch Reservation","operationId":"patch_reservation_reservations__rid__patch","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","title":"Rid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationPatchIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["reservations"],"summary":"Delete Reservation","operationId":"delete_reservation_reservations__rid__delete","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","title":"Rid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reservations/{rid}/assign":{"post":{"tags":["reservations"],"summary":"Assign Table","operationId":"assign_table_reservations__rid__assign_post","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","title":"Rid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignTableIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reservations/{rid}/status":{"post":{"tags":["reservations"],"summary":"Update Status","operationId":"update_status_reservations__rid__status_post","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","title":"Rid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateStatusIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reservations/{rid}/update":{"post":{"tags":["reservations"],"summary":"Update Reservation","operationId":"update_reservation_reservations__rid__update_post","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","title":"Rid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationUpdateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reservations/{rid}/reschedule":{"post":{"tags":["reservations"],"summary":"Reschedule Reservation","operationId":"reschedule_reservation_reservations__rid__reschedule_post","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","title":"Rid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RescheduleIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reservationonline/api/config":{"get":{"tags":["reservation online"],"summary":"Public Config","operationId":"public_config_reservationonline_api_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reservationonline/api/slots":{"get":{"tags":["reservation online"],"summary":"Public Slots","operationId":"public_slots_reservationonline_api_slots_get","parameters":[{"name":"branch","in":"query","required":true,"schema":{"type":"string","title":"Branch"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reservationonline/api/book":{"post":{"tags":["reservation online"],"summary":"Public Book","operationId":"public_book_reservationonline_api_book_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicReservationIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/birthdays":{"get":{"summary":"List Birthdays","operationId":"list_birthdays_birthdays_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/birthdays/stats":{"get":{"summary":"Get Birthday Stats","operationId":"get_birthday_stats_birthdays_stats_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/birthdays/export-csv":{"get":{"summary":"Export Csv","operationId":"export_csv_birthdays_export_csv_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/birthdays/export-vcf":{"get":{"summary":"Export Vcf","operationId":"export_vcf_birthdays_export_vcf_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/birthdays/missing-window-strict":{"get":{"summary":"Missing Window Strict Endpoint","operationId":"missing_window_strict_endpoint_birthdays_missing_window_strict_get","parameters":[{"name":"past_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":0,"default":30,"title":"Past Days"}},{"name":"next_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":0,"default":7,"title":"Next Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/birthdays/fix-missing-window-strict":{"post":{"summary":"Fix Missing Window Strict Endpoint","operationId":"fix_missing_window_strict_endpoint_birthdays_fix_missing_window_strict_post","parameters":[{"name":"past_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":0,"default":30,"title":"Past Days"}},{"name":"next_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":0,"default":7,"title":"Next Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/birthdays/run-now":{"post":{"summary":"Run Now Endpoint","operationId":"run_now_endpoint_birthdays_run_now_post","parameters":[{"name":"past_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":0,"default":30,"title":"Past Days"}},{"name":"next_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":0,"default":7,"title":"Next Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/birthdays/generate-vouchers":{"post":{"summary":"Generate Vouchers","operationId":"generate_vouchers_birthdays_generate_vouchers_post","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/birthdays/generate-vouchers-stream":{"get":{"summary":"Generate Vouchers Stream","operationId":"generate_vouchers_stream_birthdays_generate_vouchers_stream_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/birthdays/send-whatsapp":{"post":{"summary":"Send Whatsapp","operationId":"send_whatsapp_birthdays_send_whatsapp_post","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contacts":{"patch":{"summary":"Patch Contact","operationId":"patch_contact_contacts_patch","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchContactBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"List Contacts","operationId":"list_contacts_contacts_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Page Size"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":1000,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Offset"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"search_in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"all | name | phone | company","title":"Search In"},"description":"all | name | phone | company"},{"name":"source","in":"query","required":false,"schema":{"type":"string","default":"contacts","title":"Source"}},{"name":"table_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Table Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["contacts"],"summary":"Delete Contact","description":"Deletes contact(s) from contacts.db by identifier (name + phones).\nFrontend sends:\n  { \"identifier\": { \"name\": \"...\", \"phones\": \"...\" } }","operationId":"delete_contact","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteContactRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/settings/staff":{"get":{"tags":["settings"],"summary":"Get Staff","operationId":"get_staff_settings_staff_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["settings"],"summary":"Set Staff","operationId":"set_staff_settings_staff_post","parameters":[{"name":"x-sync-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Sync-Token"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffPayload","default":{"hostesses":[],"waiters":[]}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/competition-award":{"post":{"summary":"Add Award","operationId":"add_award_competition_award_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AwardIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AwardOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/competition-awards":{"get":{"summary":"List Awards","operationId":"list_awards_competition_awards_get","parameters":[{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD to filter","title":"Date"},"description":"YYYY-MM-DD to filter"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Awards Competition Awards Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/competition-award/{award_id}":{"delete":{"summary":"Delete Award","operationId":"delete_award_competition_award__award_id__delete","parameters":[{"name":"award_id","in":"path","required":true,"schema":{"type":"integer","title":"Award Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/table-search/debug-db-path":{"get":{"tags":["table_search"],"summary":"Debug Db Path","operationId":"debug_db_path_table_search_debug_db_path_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/table-search/by-date":{"get":{"tags":["table_search"],"summary":"By Date","description":"Canonical tooling endpoint:\n  GET /table-search/by-date?date=YYYY-MM-DD","operationId":"by_date_table_search_by_date_get","parameters":[{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response By Date Table Search By Date Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/table-search/search-by-date":{"get":{"tags":["table_search"],"summary":"Search By Date Alias","operationId":"search_by_date_alias_table_search_search_by_date_get","parameters":[{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search By Date Alias Table Search Search By Date Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/table-search/export-vcf":{"get":{"tags":["table_search"],"summary":"Export Vcf","operationId":"export_vcf_table_search_export_vcf_get","parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"string","description":"Comma/space separated contact IDs from per-branch table.db","title":"Ids"},"description":"Comma/space separated contact IDs from per-branch table.db"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/table-search/export-csv":{"get":{"tags":["table_search"],"summary":"Export Csv","operationId":"export_csv_table_search_export_csv_get","parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"string","description":"Comma/space separated contact IDs from per-branch table.db","title":"Ids"},"description":"Comma/space separated contact IDs from per-branch table.db"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contacts_paged":{"get":{"summary":"List Contacts Paged","operationId":"list_contacts_paged_contacts_paged_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Page Size"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":1000,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Offset"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"search_in","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"all | name | phone | company","title":"Search In"},"description":"all | name | phone | company"},{"name":"source","in":"query","required":false,"schema":{"type":"string","default":"contacts","title":"Source"}},{"name":"table_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Table Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/branches":{"get":{"tags":["auth"],"summary":"Branches List","operationId":"branches_list_auth_branches_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","operationId":"logout_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/refresh":{"post":{"tags":["auth"],"summary":"Refresh","operationId":"refresh_auth_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeOut"}}}}}}},"/auth/register":{"post":{"tags":["auth"],"summary":"Register","operationId":"register_auth_register_post","parameters":[{"name":"_args","in":"query","required":true,"schema":{"title":" Args"}},{"name":"_kwargs","in":"query","required":true,"schema":{"title":" Kwargs"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/new-user":{"post":{"tags":["auth"],"summary":"New User","operationId":"new_user_auth_new_user_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/admin/reset-device":{"post":{"tags":["auth"],"summary":"Admin Reset Device","operationId":"admin_reset_device_auth_admin_reset_device_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminResetDeviceIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/admin/set-branches":{"post":{"tags":["auth"],"summary":"Admin Set Branches","operationId":"admin_set_branches_auth_admin_set_branches_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSetBranchesIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/admin/set-name":{"post":{"tags":["auth"],"summary":"Admin Set Name","operationId":"admin_set_name_auth_admin_set_name_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSetNameIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/admin/user":{"get":{"tags":["auth"],"summary":"Admin Get User","operationId":"admin_get_user_auth_admin_user_get","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/users":{"get":{"tags":["auth"],"summary":"Admin List Users","operationId":"admin_list_users_auth_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/users/{email}":{"patch":{"tags":["auth"],"summary":"Admin Patch User","operationId":"admin_patch_user_auth_users__email__patch","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserPatchIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["auth"],"summary":"Admin Delete User","operationId":"admin_delete_user_auth_users__email__delete","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/users/{email}/active":{"post":{"tags":["auth"],"summary":"Admin Set Active","operationId":"admin_set_active_auth_users__email__active_post","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActiveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/backend/browse":{"get":{"summary":"Browse","description":"Simple HTML directory listing with links to drill into folders or download files.","operationId":"browse_backend_browse_get","parameters":[{"name":"p","in":"query","required":false,"schema":{"type":"string","description":"Relative path under backend root","default":"","title":"P"},"description":"Relative path under backend root"}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/backend/download":{"get":{"summary":"Download","operationId":"download_backend_download_get","parameters":[{"name":"p","in":"query","required":true,"schema":{"type":"string","description":"Relative file path under backend root","title":"P"},"description":"Relative file path under backend root"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/backend/open-folder":{"post":{"summary":"Open Folder","description":"Open a folder (or the file's parent) on the SERVER machine.\nWindows: Explorer; macOS: Finder; Linux: xdg-open.","operationId":"open_folder_backend_open_folder_post","parameters":[{"name":"p","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Relative path to open (dir or file’s parent)","title":"P"},"description":"Relative path to open (dir or file’s parent)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/vouchers-api/check":{"get":{"tags":["vouchers"],"summary":"Check Vouchers","description":"Recursively scan VOUCHERS_DIR and subfolders (e.g. '2026-02-26')\nfor files that match by phone digits and/or name tokens.\nReturns inline and forced download URLs.","operationId":"check_vouchers_vouchers_api_check_get","parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Guest name, e.g. 'Abdallah Naaman'","title":"Name"},"description":"Guest name, e.g. 'Abdallah Naaman'"},{"name":"phone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Phone digits, e.g. '96170656418'","title":"Phone"},"description":"Phone digits, e.g. '96170656418'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/vouchers-api/file":{"get":{"tags":["vouchers"],"summary":"Get Voucher","description":"Serve a voucher file by relative path.\n- download=false -> render inline (images/PDFs preview in browser)\n- download=true  -> force a 'save as' download","operationId":"get_voucher_vouchers_api_file_get","parameters":[{"name":"p","in":"query","required":true,"schema":{"type":"string","description":"Relative path under vouchers root","title":"P"},"description":"Relative path under vouchers root"},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","description":"Set true to force save","default":false,"title":"Download"},"description":"Set true to force save"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/vouchers-api/download":{"get":{"tags":["vouchers"],"summary":"Download Voucher","operationId":"download_voucher_vouchers_api_download_get","parameters":[{"name":"p","in":"query","required":true,"schema":{"type":"string","title":"P"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/update-contact":{"put":{"summary":"Update Contact","operationId":"update_contact_update_contact_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTableContact"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["branch_tables"],"summary":"Update Contact","operationId":"update_contact_update_contact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContactReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Update Contact","operationId":"update_contact_update_contact_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTableContact"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/delete-contact":{"delete":{"tags":["branch_tables"],"summary":"Delete Contact","operationId":"delete_contact_delete_contact_delete","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"integer","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assist/register-device":{"post":{"tags":["assist"],"summary":"Register Device","operationId":"register_device_assist_register_device_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/assist/start":{"post":{"tags":["assist"],"summary":"Start Session","operationId":"start_session_assist_start_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assist/join":{"post":{"tags":["assist"],"summary":"Join By Device","operationId":"join_by_device_assist_join_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assist/end/{session_id}":{"post":{"tags":["assist"],"summary":"End Session","operationId":"end_session_assist_end__session_id__post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/queue/enqueue":{"post":{"tags":["Customer Service Queue"],"summary":"Enqueue","operationId":"enqueue_queue_enqueue_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cs_queue__EnqueuePayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/queue/pending":{"get":{"tags":["Customer Service Queue"],"summary":"Pending Count","operationId":"pending_count_queue_pending_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/queue/stats":{"get":{"tags":["queue"],"summary":"Stats","operationId":"stats_queue_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/queue/claim":{"post":{"tags":["Customer Service Queue"],"summary":"Claim One","operationId":"claim_one_queue_claim_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/queue/complete":{"post":{"tags":["queue"],"summary":"Complete","description":"Mark a job SENT, FAILED, or CANCELLED.","operationId":"complete_queue_complete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompletePayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/queue/cancel-all":{"post":{"tags":["queue"],"summary":"Cancel All Queue","description":"Cancel ALL jobs that are not terminal (PENDING, IN_PROGRESS).\nThis ensures they will never be picked up or retried.","operationId":"cancel_all_queue_queue_cancel_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/queue/db/summary":{"get":{"tags":["queue"],"summary":"Db Summary","description":"Returns: { tables: [ {name, rows, cols:[{name,type,...}], sample:[row,...]} ] }\nMatches the UI normalizer in QueueLiveStats.jsx.","operationId":"db_summary_queue_db_summary_get","parameters":[{"name":"sample_limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":0,"default":20,"title":"Sample Limit"}},{"name":"only","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated table names to include","title":"Only"},"description":"Comma-separated table names to include"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/queue/db/meta":{"get":{"tags":["queue"],"summary":"Db Meta","description":"Lightweight metadata: table names and columns (no samples).\nReturns: { tables: [ {name, rows, cols:[{name,type,...}]} ] }","operationId":"db_meta_queue_db_meta_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/queue/db/table/{table_name}":{"get":{"tags":["queue"],"summary":"Db Table","description":"Fetch rows from one table with basic pagination.\nReturns: { name, rows, cols, items:[...], limit, offset }","operationId":"db_table_queue_db_table__table_name__get","parameters":[{"name":"table_name","in":"path","required":true,"schema":{"type":"string","title":"Table Name"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Column to order by (falls back to ROWID DESC)","title":"Order By"},"description":"Column to order by (falls back to ROWID DESC)"},{"name":"asc","in":"query","required":false,"schema":{"type":"boolean","description":"Order ascending if true","default":false,"title":"Asc"},"description":"Order ascending if true"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sync/ingest":{"put":{"tags":["sync"],"summary":"Ingest","description":"Accepts either:\n- multipart file=table.db (or table_db=...) → replaces branch DB (with backup)\n- JSON {items:[...]} or {contacts:[...]} → replace or append+dedupe\n\nAuth: your proxy can enforce Authorization; this route is method-gated only.","operationId":"ingest_sync_ingest_put","parameters":[{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}},{"name":"append","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Append"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ingest_sync_ingest_put"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["sync"],"summary":"Ingest","description":"Accepts either:\n- multipart file=table.db (or table_db=...) → replaces branch DB (with backup)\n- JSON {items:[...]} or {contacts:[...]} → replace or append+dedupe\n\nAuth: your proxy can enforce Authorization; this route is method-gated only.","operationId":"ingest_sync_ingest_put","parameters":[{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}},{"name":"append","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Append"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ingest_sync_ingest_put"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["sync"],"summary":"Ingest","description":"Accepts either:\n- multipart file=table.db (or table_db=...) → replaces branch DB (with backup)\n- JSON {items:[...]} or {contacts:[...]} → replace or append+dedupe\n\nAuth: your proxy can enforce Authorization; this route is method-gated only.","operationId":"ingest_sync_ingest_put","parameters":[{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}},{"name":"append","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Append"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ingest_sync_ingest_put"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/merge/start/":{"get":{"tags":["center-merge"],"summary":"Start Merge","operationId":"start_merge_merge_start__options","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/MergeOptions"},{"type":"null"}],"title":"Opts"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["center-merge"],"summary":"Start Merge","operationId":"start_merge_merge_start__options","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/MergeOptions"},{"type":"null"}],"title":"Opts"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"options":{"tags":["center-merge"],"summary":"Start Merge","operationId":"start_merge_merge_start__options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/merge/start":{"get":{"tags":["center-merge"],"summary":"Start Merge","operationId":"start_merge_merge_start_options","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/MergeOptions"},{"type":"null"}],"title":"Opts"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["center-merge"],"summary":"Start Merge","operationId":"start_merge_merge_start_options","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/MergeOptions"},{"type":"null"}],"title":"Opts"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"options":{"tags":["center-merge"],"summary":"Start Merge","operationId":"start_merge_merge_start_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/merge/start-get":{"get":{"tags":["center-merge"],"summary":"Start Merge Get","operationId":"start_merge_get_merge_start_get_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/merge/status/{job_id}":{"get":{"tags":["center-merge"],"summary":"Merge Status","operationId":"merge_status_merge_status__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/merge/cancel/{job_id}":{"post":{"tags":["center-merge"],"summary":"Cancel Merge","operationId":"cancel_merge_merge_cancel__job_id__post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/center-merge/run":{"post":{"tags":["center-merge"],"summary":"Run Merge","operationId":"run_merge_center_merge_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/queue/mark":{"post":{"tags":["Customer Service Queue"],"summary":"Mark Job","operationId":"mark_job_queue_mark_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/queue/list":{"get":{"tags":["Customer Service Queue"],"summary":"List Jobs","operationId":"list_jobs_queue_list_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/staff":{"get":{"tags":["staff"],"summary":"Get Staff","operationId":"get_staff_staff_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffList"}}}}}}},"/staff/add":{"post":{"tags":["staff"],"summary":"Add Staff","operationId":"add_staff_staff_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffItem"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/staff/remove":{"delete":{"tags":["staff"],"summary":"Remove Staff","operationId":"remove_staff_staff_remove_delete","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffItem"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/staff/bulk":{"post":{"tags":["staff"],"summary":"Replace Staff","operationId":"replace_staff_staff_bulk_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffList"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/staff/reset-defaults":{"post":{"tags":["staff"],"summary":"Reset Defaults","operationId":"reset_defaults_staff_reset_defaults_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffList"}}}}}}},"/cancel-sending":{"post":{"tags":["cancel-all"],"summary":"Api Cancel All","operationId":"api_cancel_all_cancel_sending_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reset-cancel":{"post":{"tags":["cancel-all"],"summary":"Api Reset Cancel","operationId":"api_reset_cancel_reset_cancel_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/cancel-status":{"get":{"tags":["cancel-all"],"summary":"Api Cancel Status","operationId":"api_cancel_status_cancel_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/center-merge/reset-log":{"post":{"tags":["center-merge"],"summary":"Reset Log","operationId":"reset_log_center_merge_reset_log_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/center-merge/log":{"get":{"tags":["center-merge"],"summary":"Get Log","operationId":"get_log_center_merge_log_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/center-merge/saved":{"get":{"tags":["center-merge"],"summary":"List Saved","operationId":"list_saved_center_merge_saved_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/center-merge/collect-dbs":{"post":{"tags":["center-merge"],"summary":"Collect Dbs","operationId":"collect_dbs_center_merge_collect_dbs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/table.db":{"get":{"tags":["export"],"summary":"Export Table","operationId":"export_table_export_table_db_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["export"],"summary":"Export Table","operationId":"export_table_export_table_db_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/export/_status":{"get":{"tags":["export"],"summary":"Export Status","operationId":"export_status_export__status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/price-map/{docKey}":{"get":{"summary":"Get Price Map Path","operationId":"get_price_map_path_price_map__docKey__get","parameters":[{"name":"docKey","in":"path","required":true,"schema":{"type":"string","title":"Dockey"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceMap"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Post Price Map Path","operationId":"post_price_map_path_price_map__docKey__post","parameters":[{"name":"docKey","in":"path","required":true,"schema":{"type":"string","title":"Dockey"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceMap"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Put Price Map Path","operationId":"put_price_map_path_price_map__docKey__put","parameters":[{"name":"docKey","in":"path","required":true,"schema":{"type":"string","title":"Dockey"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceMap"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Map","operationId":"delete_map_price_map__docKey__delete","parameters":[{"name":"docKey","in":"path","required":true,"schema":{"type":"string","title":"Dockey"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/price-map":{"get":{"summary":"Get Price Map Query","operationId":"get_price_map_query_price_map_get","parameters":[{"name":"docKey","in":"query","required":true,"schema":{"type":"string","title":"Dockey"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceMap"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Post Price Map Query","operationId":"post_price_map_query_price_map_post","parameters":[{"name":"docKey","in":"query","required":true,"schema":{"type":"string","title":"Dockey"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceMap"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/price-map-get":{"get":{"summary":"Compat Get","operationId":"compat_get_price_map_get_get","parameters":[{"name":"docKey","in":"query","required":true,"schema":{"type":"string","title":"Dockey"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/price-map-set":{"post":{"summary":"Compat Set","operationId":"compat_set_price_map_set_post","parameters":[{"name":"docKey","in":"query","required":true,"schema":{"type":"string","title":"Dockey"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceMap"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/price-map/list":{"get":{"summary":"List Maps","operationId":"list_maps_price_map_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/menu/overwrite/{name}":{"options":{"tags":["menu_overwrite"],"summary":" Opts Overwrite","operationId":"_opts_overwrite_menu_overwrite__name__options","parameters":[{"name":"name","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["menu_overwrite"],"summary":"Menu Overwrite Named","operationId":"menu_overwrite_named_menu_overwrite__name__post","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/menu/overwrite":{"options":{"tags":["menu_overwrite"],"summary":" Opts Overwrite","operationId":"_opts_overwrite_menu_overwrite_options","parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["menu_overwrite"],"summary":"Menu Overwrite Default","operationId":"menu_overwrite_default_menu_overwrite_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/menu/info":{"get":{"tags":["menu_overwrite"],"summary":"Menu Info","operationId":"menu_info_menu_info_get","parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/menu/download":{"get":{"tags":["menu_overwrite"],"summary":"Menu Download","operationId":"menu_download_menu_download_get","parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/merge-by-date/all-branches":{"post":{"summary":"Merge By Date All Branches","operationId":"merge_by_date_all_branches_merge_by_date_all_branches_post","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Override time guard (before 23:15)","default":false,"title":"Force"},"description":"Override time guard (before 23:15)"},{"name":"branches_root","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root folder that contains branch folders. Default: parent of backend.","title":"Branches Root"},"description":"Root folder that contains branch folders. Default: parent of backend."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/merge-by-date/all-branches/status":{"get":{"summary":"Merge By Date All Branches Status","operationId":"merge_by_date_all_branches_status_merge_by_date_all_branches_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/logs/pack-zip":{"post":{"tags":["logs"],"summary":"Pack Zip And Archive","description":"1) Create logs_backup.zip containing all Log_table_* folders.\n2) Move (cut) those folders into logs_backup/batch_<timestamp>/.","operationId":"pack_zip_and_archive_logs_pack_zip_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/logs/download/{filename}":{"get":{"tags":["logs"],"summary":"Download Zip","operationId":"download_zip_logs_download__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/download/table.db":{"get":{"tags":["branch-collect"],"summary":"Signed Download Table Db","description":"SECURE download for THIS server's table.db.\nRequires HMAC headers:\n  X-Ts, X-Nonce, X-Sign  (see _verify_hmac)","operationId":"signed_download_table_db_download_table_db_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/collect-branch-tables":{"post":{"tags":["branch-collect"],"summary":"Collect Branch Tables","description":"Centralized collector: fetch from all BRANCH_TABLE_SOURCES using HMAC headers.\nStores historical copy under ./collected_tables/<stamp>/ and a mergeable copy in BASE_DIR/.\nAfter this, call your existing POST /merge-tables to consolidate into table.db.","operationId":"collect_branch_tables_collect_branch_tables_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dl/table.db":{"post":{"tags":["db-download"],"summary":"Dl Table Db","operationId":"dl_table_db_dl_table_db_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_dl_table_db_dl_table_db_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["db-download"],"summary":"Dl Table Db","operationId":"dl_table_db_dl_table_db_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_dl_table_db_dl_table_db_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"head":{"tags":["db-download"],"summary":"Dl Table Db","operationId":"dl_table_db_dl_table_db_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_dl_table_db_dl_table_db_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dl/contacts.db":{"post":{"tags":["db-download"],"summary":"Dl Contacts Db","operationId":"dl_contacts_db_dl_contacts_db_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_dl_contacts_db_dl_contacts_db_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["db-download"],"summary":"Dl Contacts Db","operationId":"dl_contacts_db_dl_contacts_db_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_dl_contacts_db_dl_contacts_db_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"head":{"tags":["db-download"],"summary":"Dl Contacts Db","operationId":"dl_contacts_db_dl_contacts_db_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_dl_contacts_db_dl_contacts_db_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dl/api/export":{"post":{"tags":["db-download"],"summary":"Dl Api Export","operationId":"dl_api_export_dl_api_export_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_dl_api_export_dl_api_export_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["db-download"],"summary":"Dl Api Export","operationId":"dl_api_export_dl_api_export_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_dl_api_export_dl_api_export_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dl/download":{"post":{"tags":["db-download"],"summary":"Dl Download Generic","operationId":"dl_download_generic_dl_download_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_dl_download_generic_dl_download_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["db-download"],"summary":"Dl Download Generic","operationId":"dl_download_generic_dl_download_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_dl_download_generic_dl_download_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dl/debug":{"get":{"tags":["db-download"],"summary":"Db Download Debug","operationId":"db_download_debug_dl_debug_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/loyalty/customers":{"post":{"tags":["loyalty"],"summary":"Create customer (phone is unique)","operationId":"create_customer_loyalty_customers_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/loyalty/customers/search":{"get":{"tags":["loyalty"],"summary":"Search customers by phone or name","operationId":"search_customers_loyalty_customers_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Phone or name (LIKE search)","title":"Q"},"description":"Phone or name (LIKE search)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/loyalty/customers/{customer_id}":{"get":{"tags":["loyalty"],"summary":"Get customer with balance","operationId":"get_customer_loyalty_customers__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["loyalty"],"summary":"Update customer name","operationId":"update_customer_loyalty_customers__customer_id__patch","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/loyalty/visit":{"post":{"tags":["loyalty"],"summary":"Record a visit and earn points","operationId":"record_visit_loyalty_visit_post","parameters":[{"name":"x-branch","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Branch"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/loyalty/rewards":{"post":{"tags":["loyalty"],"summary":"Create or update a reward (by SKU)","operationId":"upsert_reward_loyalty_rewards_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RewardUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["loyalty"],"summary":"List rewards","operationId":"list_rewards_loyalty_rewards_get","parameters":[{"name":"only_active","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Only Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/loyalty/redeem":{"post":{"tags":["loyalty"],"summary":"Redeem a reward for a customer","operationId":"redeem_reward_loyalty_redeem_post","parameters":[{"name":"x-branch","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Branch"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/loyalty/adjust":{"post":{"tags":["loyalty"],"summary":"Manually adjust points (+/-)","operationId":"adjust_points_loyalty_adjust_post","parameters":[{"name":"x-branch","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Branch"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdjustPoints"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/loyalty/customers/{customer_id}/balance":{"get":{"tags":["loyalty"],"summary":"Get points balance","operationId":"get_balance_loyalty_customers__customer_id__balance_get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/loyalty/customers/{customer_id}/ledger":{"get":{"tags":["loyalty"],"summary":"Get ledger entries (earn/redeem/adjust)","operationId":"get_ledger_loyalty_customers__customer_id__ledger_get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/compact-db":{"post":{"tags":["db-maintenance"],"summary":"Compact Db","description":"Run compact_db_clone.py logic on contacts.db IN PLACE.\n\nFrontend expects:\n  POST /compact-db\n  -> JSON with before/after/saved sizes.","operationId":"compact_db_compact_db_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/backend/upload-script":{"post":{"tags":["backend-upload"],"summary":"Upload Script","description":"Upload a .py script to the backend server (admin only).\nSaves the file into ./scripts/<filename>.py on that server.","operationId":"upload_script_backend_upload_script_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_script_backend_upload_script_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/accounting/dashboard":{"get":{"tags":["accounting"],"summary":"Accounting Dashboard","description":"High-level KPIs for the accounting home.","operationId":"accounting_dashboard_accounting_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Accounting Dashboard Accounting Dashboard Get"}}}}}}},"/accounting/accounts":{"get":{"tags":["Accounting / GL Compatibility"],"summary":"List Accounts","operationId":"list_accounts_accounting_accounts_get","parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccountOut"},"title":"Response List Accounts Accounting Accounts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Accounting / GL Compatibility"],"summary":"Create Account","operationId":"create_account_accounting_accounts_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/accounting/journal":{"get":{"tags":["accounting"],"summary":"Accounting Journal","description":"General journal entries.","operationId":"accounting_journal_accounting_journal_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Accounting Journal Accounting Journal Get"}}}}}}},"/accounting/invoices":{"get":{"tags":["accounting"],"summary":"Accounting Invoices","description":"Sales / purchase invoices overview.","operationId":"accounting_invoices_accounting_invoices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Accounting Invoices Accounting Invoices Get"}}}}}}},"/accounting/reports/trial_balance":{"get":{"tags":["accounting"],"summary":"Accounting Trial Balance","description":"Trial balance: per account, debits/credits and closing balance.","operationId":"accounting_trial_balance_accounting_reports_trial_balance_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Accounting Trial Balance Accounting Reports Trial Balance Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/accounting/reports/profit_loss":{"get":{"tags":["accounting"],"summary":"Accounting Profit Loss","description":"Profit & loss statement.","operationId":"accounting_profit_loss_accounting_reports_profit_loss_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Accounting Profit Loss Accounting Reports Profit Loss Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/accounting/reports/balance_sheet":{"get":{"tags":["accounting"],"summary":"Accounting Balance Sheet","description":"Balance sheet: assets, liabilities, equity.","operationId":"accounting_balance_sheet_accounting_reports_balance_sheet_get","parameters":[{"name":"as_of","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Accounting Balance Sheet Accounting Reports Balance Sheet Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/items":{"post":{"tags":["Inventory Master"],"summary":"Create Item","operationId":"create_item_inventory_items_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/inventory_master__ItemCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Item"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Inventory Master"],"summary":"List Items","operationId":"list_items_inventory_items_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Item"},"title":"Response List Items Inventory Items Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/purchases":{"post":{"tags":["Inventory / Warehouse"],"summary":"Create purchase + stock movements","operationId":"create_purchase_inventory_purchases_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Inventory / Warehouse"],"summary":"List last purchases","operationId":"list_purchases_inventory_purchases_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/wastage":{"post":{"tags":["Inventory / Warehouse"],"summary":"Record wastage and reduce stock","operationId":"create_wastage_inventory_wastage_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WastageCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Inventory / Warehouse"],"summary":"List wastage","operationId":"list_wastage_inventory_wastage_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/requisitions":{"post":{"tags":["Inventory / Warehouse"],"summary":"Create kitchen requisition","operationId":"create_requisition_inventory_requisitions_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequisitionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Inventory / Warehouse"],"summary":"List latest requisitions","operationId":"list_requisitions_inventory_requisitions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/requisitions/{req_id}/approve":{"post":{"tags":["Inventory / Warehouse"],"summary":"Approve requisition and move stock","operationId":"approve_requisition_inventory_requisitions__req_id__approve_post","parameters":[{"name":"req_id","in":"path","required":true,"schema":{"type":"integer","title":"Req Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/stock":{"get":{"tags":["Inventory / Warehouse"],"summary":"Stock on hand with average cost","operationId":"stock_on_hand_inventory_stock_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/inventory/locations":{"get":{"tags":["Inventory Master"],"summary":"List Locations","operationId":"list_locations_inventory_locations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Location"},"type":"array","title":"Response List Locations Inventory Locations Get"}}}}}},"post":{"tags":["Inventory Master"],"summary":"Create Location","operationId":"create_location_inventory_locations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Location"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/suppliers":{"get":{"tags":["Inventory Master"],"summary":"List Suppliers","operationId":"list_suppliers_inventory_suppliers_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Supplier"},"title":"Response List Suppliers Inventory Suppliers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Inventory Master"],"summary":"Create Supplier","operationId":"create_supplier_inventory_suppliers_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupplierCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Supplier"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/recipes/{item_id}":{"get":{"tags":["Inventory Master"],"summary":"Get Recipe","operationId":"get_recipe_inventory_recipes__item_id__get","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recipe"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/recipes":{"post":{"tags":["Inventory Master"],"summary":"Create Or Replace Recipe","description":"Create or replace a recipe for an item (one recipe per finished item).","operationId":"create_or_replace_recipe_inventory_recipes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recipe"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/stock/move":{"post":{"tags":["Inventory Stock"],"summary":"Create Stock Move","description":"Register a stock movement and update balances (moving-average cost).","operationId":"create_stock_move_inventory_stock_move_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockMoveCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockBalance"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/stock/rebuild-balances":{"post":{"tags":["Inventory Stock"],"summary":"Rebuild Balances","description":"Admin tool: recompute all balances from stock_moves history.\nUse if you suspect inconsistency.","operationId":"rebuild_balances_inventory_stock_rebuild_balances_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/inventory/stock/summary":{"get":{"tags":["Inventory Stock"],"summary":"Stock Summary","description":"Get stock per item/location with cost.\nFilters:\n  - location_id\n  - item_id\n  - q: search item code/name\n  - active_only: only active items","operationId":"stock_summary_inventory_stock_summary_get","parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}},{"name":"item_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Item Id"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StockBalance"},"title":"Response Stock Summary Inventory Stock Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/transfers":{"post":{"tags":["Inventory Transfers"],"summary":"Create Transfer","description":"Create a transfer in DRAFT status (no stock movement yet).","operationId":"create_transfer_inventory_transfers_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Inventory Transfers"],"summary":"List Transfers","description":"List transfers (latest first).","operationId":"list_transfers_inventory_transfers_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"from_location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Location Id"}},{"name":"to_location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"To Location Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TransferOut"},"title":"Response List Transfers Inventory Transfers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/transfers/{transfer_id}":{"get":{"tags":["Inventory Transfers"],"summary":"Get Transfer","description":"Get a single transfer with lines.","operationId":"get_transfer_inventory_transfers__transfer_id__get","parameters":[{"name":"transfer_id","in":"path","required":true,"schema":{"type":"integer","title":"Transfer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/transfers/{transfer_id}/post":{"post":{"tags":["Inventory Transfers"],"summary":"Post Transfer","description":"Post a transfer:\n- Creates stock_moves OUT from from_location (at avg cost)\n- Creates stock_moves IN to to_location (same unit cost)\n- Updates stock balances using the stock engine","operationId":"post_transfer_inventory_transfers__transfer_id__post_post","parameters":[{"name":"transfer_id","in":"path","required":true,"schema":{"type":"integer","title":"Transfer Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostTransferPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/production/orders":{"post":{"tags":["Production Orders"],"summary":"Create Production Order","description":"Create a production order in DRAFT:\n- Uses the recipe of item_id\n- Calculates ingredient planned_qty from recipe yield\n- Stores ingredient snapshot in production_order_ingredients","operationId":"create_production_order_inventory_production_orders_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductionOrderCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductionOrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Production Orders"],"summary":"List Production Orders","operationId":"list_production_orders_inventory_production_orders_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProductionOrderOut"},"title":"Response List Production Orders Inventory Production Orders Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/production/orders/{order_id}":{"get":{"tags":["Production Orders"],"summary":"Get Production Order","operationId":"get_production_order_inventory_production_orders__order_id__get","parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductionOrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/production/orders/{order_id}/post":{"post":{"tags":["Production Orders"],"summary":"Post Production Order","description":"Post a production order:\n- For each ingredient:\n    * reads planned_qty (or actual_qty if you later set it)\n    * checks available stock in location\n    * consumes qty at current avg cost (PRODUCTION_OUT)\n- Then adds finished good (PRODUCTION_IN) with unit cost = total_input_cost / actual_qty","operationId":"post_production_order_inventory_production_orders__order_id__post_post","parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostProductionPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductionOrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/sales/days":{"post":{"tags":["Sales & COGS"],"summary":"Create Sales Day","description":"Record daily sales for a branch and automatically:\n- Consume stock based on recipes (SALE_ISSUE moves from branch location)\n- Compute COGS and gross profit per item + per day\n\nAssumptions:\n- Each sold item has a recipe in recipes/recipe_lines.\n- Branch (location_id) holds stock of the recipe components.","operationId":"create_sales_day_inventory_sales_days_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SalesDayCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SalesDayOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Sales & COGS"],"summary":"List Sales Days","description":"List daily sales summaries (without line details) for reporting:\n- Filter by location_id and/or date range.","operationId":"list_sales_days_inventory_sales_days_get","parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SalesDaySummary"},"title":"Response List Sales Days Inventory Sales Days Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/sales/days/{day_id}":{"get":{"tags":["Sales & COGS"],"summary":"Get Sales Day","operationId":"get_sales_day_inventory_sales_days__day_id__get","parameters":[{"name":"day_id","in":"path","required":true,"schema":{"type":"integer","title":"Day Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SalesDayOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/accounting/accounts/seed-basic":{"post":{"tags":["Accounting / GL Compatibility"],"summary":"Seed Basic Chart","operationId":"seed_basic_chart_accounting_accounts_seed_basic_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/accounting/journals":{"post":{"tags":["Accounting / GL Compatibility"],"summary":"Create Journal","operationId":"create_journal_accounting_journals_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JournalCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JournalOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Accounting / GL Compatibility"],"summary":"List Journals","operationId":"list_journals_accounting_journals_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JournalOut"},"title":"Response List Journals Accounting Journals Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/accounting/trial-balance":{"get":{"tags":["Accounting / GL Compatibility"],"summary":"Trial Balance","operationId":"trial_balance_accounting_trial_balance_get","parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TrialBalanceRow"},"title":"Response Trial Balance Accounting Trial Balance Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/accounting/pnl":{"get":{"tags":["Accounting / GL Compatibility"],"summary":"Profit And Loss","operationId":"profit_and_loss_accounting_pnl_get","parameters":[{"name":"date_from","in":"query","required":true,"schema":{"type":"string","title":"Date From"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PnLRow"},"title":"Response Profit And Loss Accounting Pnl Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/menu-page":{"get":{"tags":["menu_page"],"summary":"Menu Page","operationId":"menu_page_menu_page_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/tabledb/contacts":{"get":{"tags":["tabledb"],"summary":"Get Tabledb Contacts","description":"Returns:\n  {\n    \"ok\": True,\n    \"contacts\": [...],\n    \"total\": 123,\n    \"page\": 1,\n    \"pages\": 3,\n    \"page_size\": 50\n  }","operationId":"get_tabledb_contacts_tabledb_contacts_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"Search across name/phones/company/email/title/address/hostess/waiter/table_number","default":"","title":"Search"},"description":"Search across name/phones/company/email/title/address/hostess/waiter/table_number"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Tabledb Contacts Tabledb Contacts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/update-company-by-date":{"post":{"tags":["tabledb"],"summary":"Update Company By Date","description":"Update company for all rows in the current branch table.db\nwhere added_at starts with YYYY-MM-DD.","operationId":"update_company_by_date_update_company_by_date_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_update_company_by_date_update_company_by_date_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update Company By Date Update Company By Date Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tabledb/db-path":{"get":{"tags":["tabledb"],"summary":"Tabledb Db Path","operationId":"tabledb_db_path_tabledb_db_path_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Tabledb Db Path Tabledb Db Path Get"}}}}}}},"/tabledb/dedupe":{"get":{"tags":["tabledb"],"summary":"Dedupe Get Help","operationId":"dedupe_get_help_tabledb_dedupe_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["tabledb"],"summary":"Dedupe Table Db","description":"Dedupe (per-branch table.db):\n- If DB ok -> optional backup + dedupe\n- If corrupted and auto_repair -> create recovered file and return instructions","operationId":"dedupe_table_db_tabledb_dedupe_post","parameters":[{"name":"backup","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Backup"}},{"name":"auto_repair","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Auto Repair"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Dedupe Table Db Tabledb Dedupe Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tabledb/repair-only":{"get":{"tags":["tabledb"],"summary":"Repair Only Get Help","operationId":"repair_only_get_help_tabledb_repair_only_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["tabledb"],"summary":"Repair Only","description":"✅ Windows-safe: creates recovered DB file but does NOT swap table.db.\nThen you STOP backend and swap manually.","operationId":"repair_only_tabledb_repair_only_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Repair Only Tabledb Repair Only Post"}}}}}}},"/bulk-delete/by-text":{"post":{"tags":["bulk-delete"],"summary":"Bulk Delete By Text","description":"Paste notepad text. Extract numbers and delete matching contacts by phone.\n\nPayload:\n  {\n    \"text\": \"your notepad content...\",\n    \"source\": \"contacts\" | \"table\",   (default \"contacts\")\n    \"dry_run\": true|false,           (default true)\n    \"backup\": true|false             (default true)\n  }","operationId":"bulk_delete_by_text_bulk_delete_by_text_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/push/public-key":{"get":{"tags":["push"],"summary":"Get Public Key","operationId":"get_public_key_push_public_key_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/push/debug-env":{"get":{"tags":["push"],"summary":"Debug Env","operationId":"debug_env_push_debug_env_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/push/subscribe":{"post":{"tags":["push"],"summary":"Subscribe","operationId":"subscribe_push_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/push/unsubscribe":{"post":{"tags":["push"],"summary":"Unsubscribe","operationId":"unsubscribe_push_unsubscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/push/subscriptions":{"get":{"tags":["push"],"summary":"List Subscriptions","operationId":"list_subscriptions_push_subscriptions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/push/send":{"post":{"tags":["push"],"summary":"Send Push","operationId":"send_push_push_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/voucher/link":{"get":{"tags":["voucher-links"],"summary":"Create Voucher Link","description":"Returns an expiring signed token link for a specific guest voucher.\n\nSecurity:\n- Guest cannot access other vouchers because token is HMAC signed and binds to date+name+phone.\n- Link expires automatically.\n- No folder listing exposed.\n\nBehavior update:\n- If voucher PNG doesn't exist, it will be auto-generated on demand.","operationId":"create_voucher_link_voucher_link_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"},{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Guest name (same used for voucher filename)","title":"Name"},"description":"Guest name (same used for voucher filename)"},{"name":"phone","in":"query","required":true,"schema":{"type":"string","description":"Guest phone (digits used for voucher filename)","title":"Phone"},"description":"Guest phone (digits used for voucher filename)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/voucher/view":{"get":{"tags":["voucher-links"],"summary":"Voucher View","description":"Returns the voucher PNG inline (token-protected).","operationId":"voucher_view_voucher_view_get","parameters":[{"name":"t","in":"query","required":true,"schema":{"type":"string","description":"Signed token","title":"T"},"description":"Signed token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/voucher/page":{"get":{"tags":["voucher-links"],"summary":"Voucher Page","description":"Mobile-friendly page that embeds /voucher/view (token-protected).","operationId":"voucher_page_voucher_page_get","parameters":[{"name":"t","in":"query","required":true,"schema":{"type":"string","description":"Signed token","title":"T"},"description":"Signed token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/voucher/verify":{"get":{"tags":["voucher-links"],"summary":"Voucher Verify","description":"Safe debug: verify token validity + shows bound fields (no file content).\nUse it to test a guest link in the browser quickly.","operationId":"voucher_verify_voucher_verify_get","parameters":[{"name":"t","in":"query","required":true,"schema":{"type":"string","description":"Signed token","title":"T"},"description":"Signed token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/voucher/ping":{"get":{"tags":["voucher-links"],"summary":"Voucher Ping","operationId":"voucher_ping_voucher_ping_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/notify/emit":{"post":{"tags":["notify"],"summary":"Emit","description":"Admin/testing endpoint: emit a push notification manually.","operationId":"emit_notify_emit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmitRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/push-test-get":{"get":{"tags":["push-test-get"],"summary":"Push Test Get","operationId":"push_test_get_push_test_get_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/fcm/health":{"get":{"tags":["fcm"],"summary":"Health","operationId":"health_fcm_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/fcm/register":{"post":{"tags":["fcm"],"summary":"Register Token","operationId":"register_token_fcm_register_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fcm/send-test":{"post":{"tags":["fcm"],"summary":"Send Test","operationId":"send_test_fcm_send_test_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/birthdays/vouchers-zip":{"get":{"tags":["birthdays"],"summary":"Vouchers Zip Get","operationId":"vouchers_zip_get_birthdays_vouchers_zip_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["birthdays"],"summary":"Vouchers Zip Post","operationId":"vouchers_zip_post_birthdays_vouchers_zip_post","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD","title":"Date"},"description":"YYYY-MM-DD"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/table-log/branches":{"get":{"tags":["table_log"],"summary":"List User Branches","description":"✅ Returns branches user can view.\nIf user has '*' => all allowed branches.","operationId":"list_user_branches_table_log_branches_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/table-log/stats":{"get":{"tags":["table_log"],"summary":"Table Log Stats","description":"✅ Simple live stats per branch (for branches user is allowed to view):\n  - tables: number of log entries\n  - guests: sum of contacts across entries","operationId":"table_log_stats_table_log_stats_get","parameters":[{"name":"max_kb","in":"query","required":false,"schema":{"type":"integer","maximum":8192,"minimum":32,"default":256,"title":"Max Kb"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/table-log":{"get":{"tags":["table_log"],"summary":"Get Table Log","description":"✅ LiveTableFeed.jsx COMPATIBILITY:\nReturns:\n  {\n    \"branch\": \"<resolved_branch>\",\n    \"count\": <n>,\n    \"logs\": [ {table,time,hostess,waiter,contacts,...}, ... ]\n  }\n\n✅ Reads from:\n  DATA_ROOT/branches/<branch>/table_log.txt\n\n✅ Security:\n  - Must be in allowed_branches()\n  - Must be user_allows_branch(user, branch)","operationId":"get_table_log_table_log_get","parameters":[{"name":"branch","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Target branch to read logs from","title":"Branch"},"description":"Target branch to read logs from"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"max_kb","in":"query","required":false,"schema":{"type":"integer","maximum":8192,"minimum":32,"default":512,"title":"Max Kb"}},{"name":"include_raw_lines","in":"query","required":false,"schema":{"type":"boolean","description":"If true, includes raw_lines per entry","default":false,"title":"Include Raw Lines"},"description":"If true, includes raw_lines per entry"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/table-log/raw":{"get":{"tags":["table_log"],"summary":"Get Table Log Raw","operationId":"get_table_log_raw_table_log_raw_get","parameters":[{"name":"branch","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"}},{"name":"max_kb","in":"query","required":false,"schema":{"type":"integer","maximum":8192,"minimum":32,"default":512,"title":"Max Kb"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rbac/permissions":{"get":{"tags":["rbac"],"summary":"Permissions List","operationId":"permissions_list_rbac_permissions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/rbac/my-perms":{"get":{"tags":["rbac"],"summary":"My Effective Perms","operationId":"my_effective_perms_rbac_my_perms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/rbac/roles":{"get":{"tags":["rbac"],"summary":"Roles List","operationId":"roles_list_rbac_roles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["rbac"],"summary":"Admin Create Role","operationId":"admin_create_role_rbac_roles_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleCreateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rbac/roles/{role_name}":{"put":{"tags":["rbac"],"summary":"Admin Rename Role","operationId":"admin_rename_role_rbac_roles__role_name__put","parameters":[{"name":"role_name","in":"path","required":true,"schema":{"type":"string","title":"Role Name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleRenameIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["rbac"],"summary":"Admin Delete Role","operationId":"admin_delete_role_rbac_roles__role_name__delete","parameters":[{"name":"role_name","in":"path","required":true,"schema":{"type":"string","title":"Role Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rbac/roles/{role_name}/perms":{"put":{"tags":["rbac"],"summary":"Admin Set Role Perms","operationId":"admin_set_role_perms_rbac_roles__role_name__perms_put","parameters":[{"name":"role_name","in":"path","required":true,"schema":{"type":"string","title":"Role Name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RolePermsIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rbac/users":{"get":{"tags":["rbac"],"summary":"Admin List Users","operationId":"admin_list_users_rbac_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/rbac/users/{email}/roles":{"put":{"tags":["rbac"],"summary":"Admin Set User Roles","operationId":"admin_set_user_roles_rbac_users__email__roles_put","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRolesSetIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wa360/health":{"get":{"tags":["wa360"],"summary":"Wa360 Health","operationId":"wa360_health_wa360_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wa360/debug-env":{"get":{"tags":["wa360"],"summary":"Wa360 Debug Env","operationId":"wa360_debug_env_wa360_debug_env_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wa360/webhook":{"post":{"tags":["wa360"],"summary":"Wa360 Webhook","operationId":"wa360_webhook_wa360_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"get":{"tags":["wa360"],"summary":"Wa360 Webhook Verify","operationId":"wa360_webhook_verify_wa360_webhook_get","parameters":[{"name":"hub.mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Mode"}},{"name":"hub.challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Challenge"}},{"name":"hub.verify_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Verify Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wa360/logs":{"get":{"tags":["wa360"],"summary":"Wa360 Logs","operationId":"wa360_logs_wa360_logs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wa360/webhook-logs":{"get":{"tags":["wa360"],"summary":"Wa360 Webhook Logs","operationId":"wa360_webhook_logs_wa360_webhook_logs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wa360/send-template":{"post":{"tags":["wa360"],"summary":"Wa360 Send Template","operationId":"wa360_send_template_wa360_send_template_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendTemplateReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wa360/send-batch":{"post":{"tags":["wa360"],"summary":"Wa360 Send Batch","operationId":"wa360_send_batch_wa360_send_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendBatchReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/channel":{"options":{"tags":["webhook"],"summary":"Channel Webhook","operationId":"channel_webhook_webhooks_channel_options","parameters":[{"name":"hub.mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Mode"}},{"name":"hub.verify_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Verify Token"}},{"name":"hub.challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Challenge"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["webhook"],"summary":"Channel Webhook","operationId":"channel_webhook_webhooks_channel_options","parameters":[{"name":"hub.mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Mode"}},{"name":"hub.verify_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Verify Token"}},{"name":"hub.challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Challenge"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["webhook"],"summary":"Channel Webhook","operationId":"channel_webhook_webhooks_channel_options","parameters":[{"name":"hub.mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Mode"}},{"name":"hub.verify_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Verify Token"}},{"name":"hub.challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Challenge"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"head":{"tags":["webhook"],"summary":"Channel Webhook","operationId":"channel_webhook_webhooks_channel_options","parameters":[{"name":"hub.mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Mode"}},{"name":"hub.verify_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Verify Token"}},{"name":"hub.challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Challenge"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook-monitor/events":{"get":{"tags":["webhook"],"summary":"List Events","operationId":"list_events_webhook_monitor_events_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook-monitor/replies":{"get":{"tags":["webhook"],"summary":"List Replies","operationId":"list_replies_webhook_monitor_replies_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"template_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook-monitor/statuses":{"get":{"tags":["webhook"],"summary":"List Statuses","operationId":"list_statuses_webhook_monitor_statuses_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook-monitor/stats":{"get":{"tags":["webhook"],"summary":"Webhook Stats","operationId":"webhook_stats_webhook_monitor_stats_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook-monitor/register-sent-template":{"post":{"tags":["webhook"],"summary":"Register Sent Template","operationId":"register_sent_template_webhook_monitor_register_sent_template_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/webhook-monitor/customer-status":{"get":{"tags":["webhook"],"summary":"Customer Status","operationId":"customer_status_webhook_monitor_customer_status_get","parameters":[{"name":"phone","in":"query","required":true,"schema":{"type":"string","title":"Phone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook-monitor/customer-templates":{"get":{"tags":["webhook"],"summary":"Customer Templates","operationId":"customer_templates_webhook_monitor_customer_templates_get","parameters":[{"name":"phone","in":"query","required":true,"schema":{"type":"string","title":"Phone"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook-monitor/templates":{"get":{"tags":["webhook"],"summary":"List Sent Templates","operationId":"list_sent_templates_webhook_monitor_templates_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"template_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name"}},{"name":"branch","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook-monitor/d360/templates":{"get":{"tags":["webhook"],"summary":"List D360 Templates","operationId":"list_d360_templates_webhook_monitor_d360_templates_get","parameters":[{"name":"sync","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Sync"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook-monitor/d360/sync-templates":{"post":{"tags":["webhook"],"summary":"Sync D360 Templates","operationId":"sync_d360_templates_webhook_monitor_d360_sync_templates_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/webhook-monitor/template-report":{"get":{"tags":["webhook"],"summary":"Template Report","operationId":"template_report_webhook_monitor_template_report_get","parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"template_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name"}},{"name":"branch","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook-monitor/dashboard":{"get":{"tags":["webhook"],"summary":"Webhook Dashboard","operationId":"webhook_dashboard_webhook_monitor_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/webhook-monitor/test":{"post":{"tags":["webhook"],"summary":"Webhook Test","operationId":"webhook_test_webhook_monitor_test_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/call-center/health":{"get":{"tags":["Bamboo AI Call Center"],"summary":"Call Center Health","operationId":"call_center_health_call_center_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Call Center Health Call Center Health Get"}}}}}}},"/call-center/api/queues":{"get":{"tags":["Bamboo AI Call Center"],"summary":"Api Queues","operationId":"api_queues_call_center_api_queues_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"open","title":"Status"}},{"name":"queue_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Queue Type"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","default":"","title":"Branch"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/call-center/api/conversations":{"get":{"tags":["Bamboo AI Call Center"],"summary":"Api Conversations","operationId":"api_conversations_call_center_api_conversations_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","default":"","title":"Branch"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/call-center/api/conversations/{phone}/messages":{"get":{"tags":["Bamboo AI Call Center"],"summary":"Api Messages","operationId":"api_messages_call_center_api_conversations__phone__messages_get","parameters":[{"name":"phone","in":"path","required":true,"schema":{"type":"string","title":"Phone"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/call-center/api/conversations/{phone}/takeover":{"post":{"tags":["Bamboo AI Call Center"],"summary":"Api Takeover","operationId":"api_takeover_call_center_api_conversations__phone__takeover_post","parameters":[{"name":"phone","in":"path","required":true,"schema":{"type":"string","title":"Phone"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Takeover Call Center Api Conversations  Phone  Takeover Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/call-center/api/conversations/{phone}/owner-lock":{"post":{"tags":["Bamboo AI Call Center"],"summary":"Api Owner Lock","operationId":"api_owner_lock_call_center_api_conversations__phone__owner_lock_post","parameters":[{"name":"phone","in":"path","required":true,"schema":{"type":"string","title":"Phone"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Owner Lock Call Center Api Conversations  Phone  Owner Lock Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/call-center/api/conversations/{phone}/release":{"post":{"tags":["Bamboo AI Call Center"],"summary":"Api Release","operationId":"api_release_call_center_api_conversations__phone__release_post","parameters":[{"name":"phone","in":"path","required":true,"schema":{"type":"string","title":"Phone"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"default":{},"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Release Call Center Api Conversations  Phone  Release Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/call-center/api/conversations/{phone}/resolve":{"post":{"tags":["Bamboo AI Call Center"],"summary":"Api Resolve","operationId":"api_resolve_call_center_api_conversations__phone__resolve_post","parameters":[{"name":"phone","in":"path","required":true,"schema":{"type":"string","title":"Phone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Resolve Call Center Api Conversations  Phone  Resolve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/call-center/api/conversations/{phone}/send":{"post":{"tags":["Bamboo AI Call Center"],"summary":"Api Send","operationId":"api_send_call_center_api_conversations__phone__send_post","parameters":[{"name":"phone","in":"path","required":true,"schema":{"type":"string","title":"Phone"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Send Call Center Api Conversations  Phone  Send Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/call-center/api/notification-recipients":{"get":{"tags":["Bamboo AI Call Center"],"summary":"Api Notification Recipients","operationId":"api_notification_recipients_call_center_api_notification_recipients_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Notification Recipients Call Center Api Notification Recipients Get"}}}}}},"post":{"tags":["Bamboo AI Call Center"],"summary":"Api Add Notification Recipient","operationId":"api_add_notification_recipient_call_center_api_notification_recipients_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Add Notification Recipient Call Center Api Notification Recipients Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/call-center/api/notification-recipients/{recipient_id}":{"delete":{"tags":["Bamboo AI Call Center"],"summary":"Api Remove Notification Recipient","operationId":"api_remove_notification_recipient_call_center_api_notification_recipients__recipient_id__delete","parameters":[{"name":"recipient_id","in":"path","required":true,"schema":{"type":"string","title":"Recipient Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Remove Notification Recipient Call Center Api Notification Recipients  Recipient Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/call-center/api/notification-settings":{"put":{"tags":["Bamboo AI Call Center"],"summary":"Api Update Notification Settings","operationId":"api_update_notification_settings_call_center_api_notification_settings_put","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Update Notification Settings Call Center Api Notification Settings Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/call-center/api/notification-attempts":{"get":{"tags":["Bamboo AI Call Center"],"summary":"Api Notification Attempts","operationId":"api_notification_attempts_call_center_api_notification_attempts_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Notification Attempts Call Center Api Notification Attempts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/call-center/api/test-numbers/reset":{"post":{"tags":["Bamboo AI Call Center"],"summary":"Api Reset Test Numbers","operationId":"api_reset_test_numbers_call_center_api_test_numbers_reset_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Reset Test Numbers Call Center Api Test Numbers Reset Post"}}}}}}},"/call-center/api/test-inbound":{"post":{"tags":["Bamboo AI Call Center"],"summary":"Api Test Inbound","operationId":"api_test_inbound_call_center_api_test_inbound_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Test Inbound Call Center Api Test Inbound Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/push/vapid-public":{"get":{"tags":["push"],"summary":"Vapid Public","operationId":"vapid_public_push_vapid_public_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/push/stats":{"get":{"tags":["push"],"summary":"Stats","operationId":"stats_push_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/push/test":{"post":{"tags":["push"],"summary":"Test Push","operationId":"test_push_push_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestPushRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/backend-info":{"get":{"tags":["webhook dashboard"],"summary":"Backend Info","operationId":"backend_info_webhooks_backend_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/webhooks/events":{"get":{"tags":["webhook dashboard"],"summary":"List Events","operationId":"list_events_webhooks_events_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/replies":{"get":{"tags":["webhook dashboard"],"summary":"List Replies","operationId":"list_replies_webhooks_replies_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/statuses":{"get":{"tags":["webhook dashboard"],"summary":"List Statuses","operationId":"list_statuses_webhooks_statuses_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/templates":{"get":{"tags":["webhook dashboard"],"summary":"List Sent Templates","operationId":"list_sent_templates_webhooks_templates_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/stats":{"get":{"tags":["webhook dashboard"],"summary":"Webhook Stats","operationId":"webhook_stats_webhooks_stats_get","parameters":[{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/inbox":{"get":{"tags":["webhook dashboard"],"summary":"Inbox","operationId":"inbox_webhooks_inbox_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/conversation":{"get":{"tags":["webhook dashboard"],"summary":"Conversation","operationId":"conversation_webhooks_conversation_get","parameters":[{"name":"phone","in":"query","required":true,"schema":{"type":"string","title":"Phone"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/send-text":{"post":{"tags":["webhook dashboard"],"summary":"Api Send Text","operationId":"api_send_text_webhooks_send_text_post","parameters":[{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/send-audio":{"post":{"tags":["webhook dashboard"],"summary":"Api Send Audio","operationId":"api_send_audio_webhooks_send_audio_post","parameters":[{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/upload-media":{"post":{"tags":["webhook dashboard"],"summary":"Api Upload Media","operationId":"api_upload_media_webhooks_upload_media_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_api_upload_media_webhooks_upload_media_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/upload-audio-and-send":{"post":{"tags":["webhook dashboard"],"summary":"Api Upload Audio And Send","operationId":"api_upload_audio_and_send_webhooks_upload_audio_and_send_post","parameters":[{"name":"phone","in":"query","required":true,"schema":{"type":"string","title":"Phone"}},{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_api_upload_audio_and_send_webhooks_upload_audio_and_send_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/media/{media_id}":{"get":{"tags":["webhook dashboard"],"summary":"Api Get Media","operationId":"api_get_media_webhooks_media__media_id__get","parameters":[{"name":"media_id","in":"path","required":true,"schema":{"type":"string","title":"Media Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/register-sent-template":{"post":{"tags":["webhook dashboard"],"summary":"Register Sent Template","operationId":"register_sent_template_webhooks_register_sent_template_post","parameters":[{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/customer-status":{"get":{"tags":["webhook dashboard"],"summary":"Customer Status","operationId":"customer_status_webhooks_customer_status_get","parameters":[{"name":"phone","in":"query","required":true,"schema":{"type":"string","title":"Phone"}},{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/customer-templates":{"get":{"tags":["webhook dashboard"],"summary":"Customer Templates","operationId":"customer_templates_webhooks_customer_templates_get","parameters":[{"name":"phone","in":"query","required":true,"schema":{"type":"string","title":"Phone"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/login":{"get":{"tags":["webhook dashboard"],"summary":"Webhook Login Page","operationId":"webhook_login_page_webhooks_login_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"tags":["webhook dashboard"],"summary":"Webhook Login","operationId":"webhook_login_webhooks_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_webhook_login_webhooks_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/logout":{"get":{"tags":["webhook dashboard"],"summary":"Webhook Logout","operationId":"webhook_logout_webhooks_logout_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/webhooks/dashboard":{"get":{"tags":["webhook dashboard"],"summary":"Webhook Dashboard","operationId":"webhook_dashboard_webhooks_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/webhooks/test":{"post":{"tags":["webhook dashboard"],"summary":"Webhook Test","operationId":"webhook_test_webhooks_test_post","parameters":[{"name":"backend","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/media-manager/upload":{"post":{"tags":["media-manager"],"summary":"Upload Media","operationId":"upload_media_media_manager_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_media_media_manager_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/media-manager/list":{"get":{"tags":["media-manager"],"summary":"List Media","operationId":"list_media_media_manager_list_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","default":"","title":"Branch"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"","title":"Kind"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/media-manager/{filename}":{"get":{"tags":["media-manager"],"summary":"Get Media Link","operationId":"get_media_link_media_manager__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["media-manager"],"summary":"Delete Media","operationId":"delete_media_media_manager__filename__delete","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contacts/export-vcf":{"get":{"tags":["Contacts VCF Export"],"summary":"Export Contacts Vcf","operationId":"export_contacts_vcf_contacts_export_vcf_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"Optional search by name or phone","default":"","title":"Search"},"description":"Optional search by name or phone"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"0 means export all contacts","default":0,"title":"Limit"},"description":"0 means export all contacts"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contacts/export.vcf":{"get":{"tags":["Contacts VCF Export"],"summary":"Export Contacts Vcf Short","operationId":"export_contacts_vcf_short_contacts_export_vcf_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat-seen/upload":{"post":{"tags":["Chat Seen Contacts"],"summary":"Upload Chat","operationId":"upload_chat_chat_seen_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_chat_chat_seen_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat-seen/create-voucher":{"post":{"tags":["Chat Seen Contacts"],"summary":"Create Voucher","operationId":"create_voucher_chat_seen_create_voucher_post","parameters":[{"name":"guest_name","in":"query","required":true,"schema":{"type":"string","title":"Guest Name"}},{"name":"first_visit_date","in":"query","required":true,"schema":{"type":"string","title":"First Visit Date"}},{"name":"normalized_phone","in":"query","required":false,"schema":{"type":"string","default":"","title":"Normalized Phone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat-seen/create-vouchers-bulk":{"post":{"tags":["Chat Seen Contacts"],"summary":"Create Vouchers Bulk","description":"Generate vouchers for ALL guests matching the same filters used by the table.\n\nDefault behavior in this adjusted version:\n  - only_missing=false\n  - overwrite_existing=true\n\nSo pressing the frontend bulk button regenerates vouchers for every filtered guest,\nincluding guests that already have a voucher_link.","operationId":"create_vouchers_bulk_chat_seen_create_vouchers_bulk_post","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"matched","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Matched"}},{"name":"date_from","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date To"}},{"name":"month_day_from","in":"query","required":false,"schema":{"type":"string","default":"","title":"Month Day From"}},{"name":"month_day_to","in":"query","required":false,"schema":{"type":"string","default":"","title":"Month Day To"}},{"name":"visit_date_field","in":"query","required":false,"schema":{"type":"string","default":"first","title":"Visit Date Field"}},{"name":"visit_sort","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Visit Sort"}},{"name":"only_missing","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Only Missing"}},{"name":"overwrite_existing","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Overwrite Existing"}},{"name":"max_items","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":1,"default":50000,"title":"Max Items"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat-seen/send-voucher-template":{"post":{"tags":["Chat Seen Contacts"],"summary":"Send Single Voucher Template","operationId":"send_single_voucher_template_chat_seen_send_voucher_template_post","parameters":[{"name":"normalized_phone","in":"query","required":true,"schema":{"type":"string","title":"Normalized Phone"}},{"name":"template_name","in":"query","required":false,"schema":{"type":"string","default":"first_time_we_met","title":"Template Name"}},{"name":"language_code","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Language Code"}},{"name":"create_missing_voucher","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Create Missing Voucher"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat-seen/send-voucher-template-test":{"post":{"tags":["Chat Seen Contacts"],"summary":"Send Test Voucher Template","description":"Test send only:\n- Sends to D360_TEST_NUMBER / 96171565383\n- Uses the selected customer's own name for body {{1}}\n- Uses the selected customer's own voucher image link in the header\n- Does NOT mark the customer as normally sent, so bulk sending is not affected","operationId":"send_test_voucher_template_chat_seen_send_voucher_template_test_post","parameters":[{"name":"normalized_phone","in":"query","required":true,"schema":{"type":"string","title":"Normalized Phone"}},{"name":"template_name","in":"query","required":false,"schema":{"type":"string","default":"first_time_we_met","title":"Template Name"}},{"name":"language_code","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Language Code"}},{"name":"create_missing_voucher","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Create Missing Voucher"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat-seen/send-voucher-template-bulk":{"post":{"tags":["Chat Seen Contacts"],"summary":"Send Voucher Template Bulk","description":"Send the approved 360dialog template to every contact matching the current frontend filters.\nEach customer receives:\n  - Body {{1}} = their own name\n  - Header image = their own generated voucher URL\n  - One static button: More Info (no parameter sent unless D360_TEMPLATE_BUTTON_MODE=url)","operationId":"send_voucher_template_bulk_chat_seen_send_voucher_template_bulk_post","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"matched","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Matched"}},{"name":"date_from","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date To"}},{"name":"month_day_from","in":"query","required":false,"schema":{"type":"string","default":"","title":"Month Day From"}},{"name":"month_day_to","in":"query","required":false,"schema":{"type":"string","default":"","title":"Month Day To"}},{"name":"visit_date_field","in":"query","required":false,"schema":{"type":"string","default":"first","title":"Visit Date Field"}},{"name":"visit_sort","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Visit Sort"}},{"name":"template_name","in":"query","required":false,"schema":{"type":"string","default":"first_time_we_met","title":"Template Name"}},{"name":"language_code","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Language Code"}},{"name":"create_missing_vouchers","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Create Missing Vouchers"}},{"name":"only_unsent","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Only Unsent"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"max_items","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":1,"default":1000,"title":"Max Items"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat-seen/list":{"get":{"tags":["Chat Seen Contacts"],"summary":"List Seen Contacts","operationId":"list_seen_contacts_chat_seen_list_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"matched","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Matched"}},{"name":"date_from","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date To"}},{"name":"month_day_from","in":"query","required":false,"schema":{"type":"string","default":"","title":"Month Day From"}},{"name":"month_day_to","in":"query","required":false,"schema":{"type":"string","default":"","title":"Month Day To"}},{"name":"visit_date_field","in":"query","required":false,"schema":{"type":"string","default":"first","title":"Visit Date Field"}},{"name":"visit_sort","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Visit Sort"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat-seen/stats":{"get":{"tags":["Chat Seen Contacts"],"summary":"Stats","operationId":"stats_chat_seen_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/chat-seen/export-csv":{"get":{"tags":["Chat Seen Contacts"],"summary":"Export Csv","operationId":"export_csv_chat_seen_export_csv_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"matched","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Matched"}},{"name":"date_from","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"type":"string","default":"","title":"Date To"}},{"name":"month_day_from","in":"query","required":false,"schema":{"type":"string","default":"","title":"Month Day From"}},{"name":"month_day_to","in":"query","required":false,"schema":{"type":"string","default":"","title":"Month Day To"}},{"name":"visit_date_field","in":"query","required":false,"schema":{"type":"string","default":"first","title":"Visit Date Field"}},{"name":"visit_sort","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Visit Sort"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat-seen/voucher-file/{first_visit_date}/{filename}":{"get":{"tags":["Chat Seen Contacts"],"summary":"Get Voucher File","description":"Fallback direct backend file endpoint.\nMain link is /static/loyalty_vouchers/..., but this helps you test\nwhether the file exists even if StaticFiles is not mounted in main.py.","operationId":"get_voucher_file_chat_seen_voucher_file__first_visit_date___filename__get","parameters":[{"name":"first_visit_date","in":"path","required":true,"schema":{"type":"string","title":"First Visit Date"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat-seen/download-db":{"get":{"tags":["Chat Seen Contacts"],"summary":"Download Db","operationId":"download_db_chat_seen_download_db_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/chat-seen/clear":{"delete":{"tags":["Chat Seen Contacts"],"summary":"Clear","operationId":"clear_chat_seen_clear_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/loyalty/{first_visit_date}/{guest_name}":{"get":{"tags":["Loyalty Voucher"],"summary":"Public Loyalty Voucher Redirect","operationId":"public_loyalty_voucher_redirect_loyalty__first_visit_date___guest_name__get","parameters":[{"name":"first_visit_date","in":"path","required":true,"schema":{"type":"string","title":"First Visit Date"}},{"name":"guest_name","in":"path","required":true,"schema":{"type":"string","title":"Guest Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/loyalty/code/{voucher_code}":{"get":{"tags":["Loyalty Voucher"],"summary":"Get Voucher By Code","operationId":"get_voucher_by_code_loyalty_code__voucher_code__get","parameters":[{"name":"voucher_code","in":"path","required":true,"schema":{"type":"string","title":"Voucher Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/loyalty/redeem/{voucher_code}":{"post":{"tags":["Loyalty Voucher"],"summary":"Redeem Voucher","operationId":"redeem_voucher_loyalty_redeem__voucher_code__post","parameters":[{"name":"voucher_code","in":"path","required":true,"schema":{"type":"string","title":"Voucher Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer-service/send-by-date":{"post":{"tags":["Customer Service 360"],"summary":"Send By Date","operationId":"send_by_date_customer_service_send_by_date_post","parameters":[{"name":"x-branch","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Branch"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerServiceSendRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer-service/test-send":{"post":{"tags":["Customer Service 360"],"summary":"Test Send","operationId":"test_send_customer_service_test_send_post","parameters":[{"name":"x-branch","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Branch"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerServiceTestSendRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer-service/status/{job_id}":{"get":{"tags":["Customer Service 360"],"summary":"Campaign Status","operationId":"campaign_status_customer_service_status__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer-service/stop/{job_id}":{"post":{"tags":["Customer Service 360"],"summary":"Stop Campaign","operationId":"stop_campaign_customer_service_stop__job_id__post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer-service/logs":{"get":{"tags":["Customer Service 360"],"summary":"Logs","operationId":"logs_customer_service_logs_get","parameters":[{"name":"x-branch","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Branch"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer-service/debug-by-date":{"get":{"tags":["Customer Service 360"],"summary":"Debug By Date","operationId":"debug_by_date_customer_service_debug_by_date_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}},{"name":"x-branch","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Branch"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer-service/health":{"get":{"tags":["Customer Service 360"],"summary":"Health","operationId":"health_customer_service_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/endofday/health":{"get":{"tags":["End Of Day Reports"],"summary":"Health","operationId":"health_endofday_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/endofday/auth/login":{"post":{"tags":["End Of Day Reports"],"summary":"Login","operationId":"login_endofday_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/auth/me":{"get":{"tags":["End Of Day Reports"],"summary":"Me","operationId":"me_endofday_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/auth/logout":{"post":{"tags":["End Of Day Reports"],"summary":"Logout","operationId":"logout_endofday_auth_logout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/users":{"get":{"tags":["End Of Day Reports"],"summary":"List Users","operationId":"list_users_endofday_users_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["End Of Day Reports"],"summary":"Create User","operationId":"create_user_endofday_users_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/users/{user_id}/password":{"post":{"tags":["End Of Day Reports"],"summary":"Reset User Password","operationId":"reset_user_password_endofday_users__user_id__password_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPasswordIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/users/{user_id}":{"delete":{"tags":["End Of Day Reports"],"summary":"Disable User","operationId":"disable_user_endofday_users__user_id__delete","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/settings/expenses":{"get":{"tags":["End Of Day Reports"],"summary":"List Expense Settings","operationId":"list_expense_settings_endofday_settings_expenses_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["End Of Day Reports"],"summary":"Add Expense Setting","operationId":"add_expense_setting_endofday_settings_expenses_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpenseSettingIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/settings/system-rate":{"get":{"tags":["End Of Day Reports"],"summary":"Get System Rate","operationId":"get_system_rate_endofday_settings_system_rate_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["End Of Day Reports"],"summary":"Set System Rate","operationId":"set_system_rate_endofday_settings_system_rate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemRateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/settings/branch-tax":{"get":{"tags":["End Of Day Reports"],"summary":"List Branch Tax Settings","operationId":"list_branch_tax_settings_endofday_settings_branch_tax_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["End Of Day Reports"],"summary":"Set Branch Tax Setting","operationId":"set_branch_tax_setting_endofday_settings_branch_tax_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BranchTaxSettingIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/settings/expenses/{expense_id}":{"delete":{"tags":["End Of Day Reports"],"summary":"Delete Expense Setting","operationId":"delete_expense_setting_endofday_settings_expenses__expense_id__delete","parameters":[{"name":"expense_id","in":"path","required":true,"schema":{"type":"integer","title":"Expense Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/ocr-upload":{"post":{"tags":["End Of Day Reports"],"summary":"Ocr Upload","operationId":"ocr_upload_endofday_ocr_upload_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ocr_upload_endofday_ocr_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/uploads":{"get":{"tags":["End Of Day Reports"],"summary":"List Uploads","operationId":"list_uploads_endofday_uploads_get","parameters":[{"name":"date_from","in":"query","required":true,"schema":{"type":"string","title":"Date From"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","title":"Date To"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","default":"","title":"Branch"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"","title":"Kind"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/documents/{upload_id}/{public_token}":{"get":{"tags":["End Of Day Reports"],"summary":"Get Public Document","description":"Public secure document link.\nThe URL contains a random token, so camera photos and attached invoices can open directly\nfrom saved reports, printouts, admin backup screens, or copied links without login.","operationId":"get_public_document_endofday_documents__upload_id___public_token__get","parameters":[{"name":"upload_id","in":"path","required":true,"schema":{"type":"integer","title":"Upload Id"}},{"name":"public_token","in":"path","required":true,"schema":{"type":"string","title":"Public Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/uploads/{upload_id}":{"get":{"tags":["End Of Day Reports"],"summary":"Get Upload","operationId":"get_upload_endofday_uploads__upload_id__get","parameters":[{"name":"upload_id","in":"path","required":true,"schema":{"type":"integer","title":"Upload Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/draft":{"post":{"tags":["End Of Day Reports"],"summary":"Save Live Draft","operationId":"save_live_draft_endofday_draft_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveDraftIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["End Of Day Reports"],"summary":"Get Live Draft","operationId":"get_live_draft_endofday_draft_get","parameters":[{"name":"branch","in":"query","required":true,"schema":{"type":"string","title":"Branch"}},{"name":"report_date","in":"query","required":true,"schema":{"type":"string","title":"Report Date"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/branch-draft":{"post":{"tags":["End Of Day Reports"],"summary":"Save Branch Live Draft","description":"Shared live draft per branch/date.\nPhone and PC now read/write the same branch/date draft, not a device-local or user-only draft.\nEmpty/default payloads cannot overwrite an existing meaningful draft.","operationId":"save_branch_live_draft_endofday_branch_draft_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BranchLiveDraftIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["End Of Day Reports"],"summary":"Get Branch Live Draft","description":"Load the latest branch/date draft entered from any device or authorized user.","operationId":"get_branch_live_draft_endofday_branch_draft_get","parameters":[{"name":"branch","in":"query","required":true,"schema":{"type":"string","title":"Branch"}},{"name":"report_date","in":"query","required":true,"schema":{"type":"string","title":"Report Date"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/accounting/gl-accounts":{"get":{"tags":["End Of Day Reports"],"summary":"Eod Gl Accounts","description":"Search the live CK chart of accounts using the same posting-account rules as CK ERP.","operationId":"eod_gl_accounts_endofday_accounting_gl_accounts_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":250,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/ai/suggest-account":{"post":{"tags":["End Of Day Reports"],"summary":"Eod Ai Suggest Account","operationId":"eod_ai_suggest_account_endofday_ai_suggest_account_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/ai/branch-performance":{"post":{"tags":["End Of Day Reports"],"summary":"Eod Ai Branch Performance","operationId":"eod_ai_branch_performance_endofday_ai_branch_performance_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/quality-check":{"post":{"tags":["End Of Day Reports"],"summary":"Endofday Quality Check","description":"Preview the same deterministic quality gate used when saving.","operationId":"endofday_quality_check_endofday_quality_check_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndOfDayIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/ai/management-report":{"post":{"tags":["End Of Day Reports"],"summary":"Eod Ai Management Report","description":"Full read-only branch management report.\n\nThe branch-performance controller calculates every figure first. OpenAI can only\nenrich the narrative, risk register and recommended action plan.","operationId":"eod_ai_management_report_endofday_ai_management_report_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/accounting/status/{report_id}":{"get":{"tags":["End Of Day Reports"],"summary":"Eod Accounting Status","operationId":"eod_accounting_status_endofday_accounting_status__report_id__get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/accounting/sync/{report_id}":{"post":{"tags":["End Of Day Reports"],"summary":"Eod Accounting Sync","operationId":"eod_accounting_sync_endofday_accounting_sync__report_id__post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/save":{"post":{"tags":["End Of Day Reports"],"summary":"Save Report","operationId":"save_report_endofday_save_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndOfDayIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/reports/{report_id}":{"get":{"tags":["End Of Day Reports"],"summary":"Get Report","operationId":"get_report_endofday_reports__report_id__get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["End Of Day Reports"],"summary":"Delete Report","description":"Delete an EOD report with controlled Central Kitchen synchronization.\n\nAdmin may delete any branch. A normal branch user may delete only the branch\nassigned to the login. CK GL history is voided (never physically erased), and\nCK Balance source rows are removed so dashboards stop showing the deleted EOD.","operationId":"delete_report_endofday_reports__report_id__delete","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/reports/{report_id}/expenses/{expense_id}/attachment":{"delete":{"tags":["End Of Day Reports"],"summary":"Unlink Report Expense Attachment","description":"Unlink one saved receipt without deleting the financial expense.\n\nUses the existing eod_deleted_expenses audit register. No new table, migration,\nGL posting, CK Balance posting, or database-file replacement is performed.","operationId":"unlink_report_expense_attachment_endofday_reports__report_id__expenses__expense_id__attachment_delete","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"expense_id","in":"path","required":true,"schema":{"type":"integer","title":"Expense Id"}},{"name":"reason","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":500,"default":"Attachment unlinked from expense","title":"Reason"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/reports/{report_id}/expenses/{expense_id}":{"delete":{"tags":["End Of Day Reports"],"summary":"Delete Report Expense","description":"Delete one active EOD expense and immediately rebuild the CK accounting view.","operationId":"delete_report_expense_endofday_reports__report_id__expenses__expense_id__delete","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"expense_id","in":"path","required":true,"schema":{"type":"integer","title":"Expense Id"}},{"name":"reason","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":500,"default":"Duplicate or incorrect expense","title":"Reason"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/list":{"get":{"tags":["End Of Day Reports"],"summary":"List Reports","operationId":"list_reports_endofday_list_get","parameters":[{"name":"date_from","in":"query","required":true,"schema":{"type":"string","title":"Date From"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","title":"Date To"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","default":"","title":"Branch"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/summary":{"get":{"tags":["End Of Day Reports"],"summary":"Summary","operationId":"summary_endofday_summary_get","parameters":[{"name":"date_from","in":"query","required":true,"schema":{"type":"string","title":"Date From"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","title":"Date To"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","default":"","title":"Branch"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/export.csv":{"get":{"tags":["End Of Day Reports"],"summary":"Export Csv","operationId":"export_csv_endofday_export_csv_get","parameters":[{"name":"date_from","in":"query","required":true,"schema":{"type":"string","title":"Date From"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","title":"Date To"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","default":"","title":"Branch"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/employees":{"get":{"tags":["End Of Day Reports"],"summary":"List Employees","operationId":"list_employees_endofday_employees_get","parameters":[{"name":"branch","in":"query","required":false,"schema":{"type":"string","default":"","title":"Branch"}},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Include Inactive"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["End Of Day Reports"],"summary":"Save Employee","operationId":"save_employee_endofday_employees_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/employees/{employee_id}":{"delete":{"tags":["End Of Day Reports"],"summary":"Deactivate Employee","operationId":"deactivate_employee_endofday_employees__employee_id__delete","parameters":[{"name":"employee_id","in":"path","required":true,"schema":{"type":"integer","title":"Employee Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/employees/{employee_id}/month":{"get":{"tags":["End Of Day Reports"],"summary":"Employee Month","operationId":"employee_month_endofday_employees__employee_id__month_get","parameters":[{"name":"employee_id","in":"path","required":true,"schema":{"type":"integer","title":"Employee Id"}},{"name":"period_month","in":"query","required":true,"schema":{"type":"string","title":"Period Month"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/salary-slips":{"post":{"tags":["End Of Day Reports"],"summary":"Create Salary Or Advance Slip","operationId":"create_salary_or_advance_slip_endofday_salary_slips_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SalarySlipCreateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["End Of Day Reports"],"summary":"List Salary Slips","operationId":"list_salary_slips_endofday_salary_slips_get","parameters":[{"name":"date_from","in":"query","required":true,"schema":{"type":"string","title":"Date From"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","title":"Date To"}},{"name":"employee_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Employee Id"}},{"name":"slip_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Slip Type"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/salary-slips/{slip_id}":{"get":{"tags":["End Of Day Reports"],"summary":"Get Salary Slip","operationId":"get_salary_slip_endofday_salary_slips__slip_id__get","parameters":[{"name":"slip_id","in":"path","required":true,"schema":{"type":"integer","title":"Slip Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/branch-cash/accounts":{"get":{"tags":["End Of Day Reports"],"summary":"List Branch Cash Accounts","operationId":"list_branch_cash_accounts_endofday_branch_cash_accounts_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/branch-cash/{branch}":{"get":{"tags":["End Of Day Reports"],"summary":"Get Branch Cash","operationId":"get_branch_cash_endofday_branch_cash__branch__get","parameters":[{"name":"branch","in":"path","required":true,"schema":{"type":"string","title":"Branch"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/branch-cash/opening":{"post":{"tags":["End Of Day Reports"],"summary":"Set Branch Cash Opening","operationId":"set_branch_cash_opening_endofday_branch_cash_opening_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BranchOpeningIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/branch-cash/adjustment":{"post":{"tags":["End Of Day Reports"],"summary":"Add Branch Cash Adjustment","operationId":"add_branch_cash_adjustment_endofday_branch_cash_adjustment_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BranchCashAdjustmentIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/branch-cash/{branch}/adjustments":{"get":{"tags":["End Of Day Reports"],"summary":"List Branch Cash Adjustments","operationId":"list_branch_cash_adjustments_endofday_branch_cash__branch__adjustments_get","parameters":[{"name":"branch","in":"path","required":true,"schema":{"type":"string","title":"Branch"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/branch-cash/{branch}/latest-report":{"delete":{"tags":["End Of Day Reports"],"summary":"Delete Latest Branch Report","description":"Delete the latest saved report for a branch, then branch cash recalculates automatically.","operationId":"delete_latest_branch_report_endofday_branch_cash__branch__latest_report_delete","parameters":[{"name":"branch","in":"path","required":true,"schema":{"type":"string","title":"Branch"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/integration-status":{"get":{"tags":["End Of Day Reports"],"summary":"Ultimate Integration Status","operationId":"ultimate_integration_status_endofday_integration_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/accounting/sync-pending":{"post":{"tags":["End Of Day Reports"],"summary":"Ultimate Sync Pending Accounting","operationId":"ultimate_sync_pending_accounting_endofday_accounting_sync_pending_post","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/company-loans/print-pack":{"get":{"tags":["End Of Day Reports"],"summary":"Eod Company Loans Print Pack","operationId":"eod_company_loans_print_pack_endofday_company_loans_print_pack_get","parameters":[{"name":"report_date","in":"query","required":true,"schema":{"type":"string","title":"Report Date"}},{"name":"branch","in":"query","required":true,"schema":{"type":"string","title":"Branch"}},{"name":"finalize","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Finalize"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/endofday/reports/{report_id}/professional-pack":{"get":{"tags":["End Of Day Reports"],"summary":"Ultimate Professional Report Pack","operationId":"ultimate_professional_report_pack_endofday_reports__report_id__professional_pack_get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival-vouchers/health":{"get":{"tags":["Festival Vouchers"],"summary":"Health","operationId":"health_festival_vouchers_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/festival-vouchers/generate":{"get":{"tags":["Festival Vouchers"],"summary":"Generate Help","operationId":"generate_help_festival_vouchers_generate_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["Festival Vouchers"],"summary":"Generate","operationId":"generate_festival_vouchers_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoucherRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival-vouchers/st-christina/health":{"get":{"tags":["Festival Vouchers"],"summary":"Saint Christina Health","operationId":"saint_christina_health_festival_vouchers_st_christina_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/festival-vouchers/st-christina/generate":{"post":{"tags":["Festival Vouchers"],"summary":"Generate Saint Christina","description":"Generate or restore one permanent Saint Christina voucher.","operationId":"generate_saint_christina_festival_vouchers_st_christina_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaintChristinaVoucherRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival-vouchers/st-james/health":{"get":{"tags":["Festival Vouchers"],"summary":"Saint James Health","operationId":"saint_james_health_festival_vouchers_st_james_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/festival-vouchers/st-james/generate":{"post":{"tags":["Festival Vouchers"],"summary":"Generate Saint James","description":"Generate or restore one permanent Saint James voucher.","operationId":"generate_saint_james_festival_vouchers_st_james_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaintJamesVoucherRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival-vouchers/st-nathalie/health":{"get":{"tags":["Festival Vouchers"],"summary":"Saint Nathalie Health","operationId":"saint_nathalie_health_festival_vouchers_st_nathalie_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/festival-vouchers/st-nathalie/generate":{"post":{"tags":["Festival Vouchers"],"summary":"Generate Saint Nathalie","description":"Generate or restore one permanent Saint Nathalie voucher.","operationId":"generate_saint_nathalie_festival_vouchers_st_nathalie_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaintNathalieVoucherRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival-vouchers/st-martha/health":{"get":{"tags":["Festival Vouchers"],"summary":"Saint Martha Health","operationId":"saint_martha_health_festival_vouchers_st_martha_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/festival-vouchers/st-martha/generate":{"post":{"tags":["Festival Vouchers"],"summary":"Generate Saint Martha","description":"Generate or restore one permanent Saint Martha voucher.","operationId":"generate_saint_martha_festival_vouchers_st_martha_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaintMarthaVoucherRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival-vouchers/delivery-status":{"post":{"tags":["Festival Vouchers"],"summary":"Delivery Status","description":"Return terminal/pending webhook states for accepted WhatsApp message IDs.","operationId":"delivery_status_festival_vouchers_delivery_status_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliveryStatusRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival-vouchers/image/{token}":{"get":{"tags":["Festival Vouchers"],"summary":"Image","operationId":"image_festival_vouchers_image__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/festival-vouchers/view/{token}":{"get":{"tags":["Festival Vouchers"],"summary":"View","operationId":"view_festival_vouchers_view__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/caller-id/health":{"get":{"tags":["Android Caller ID"],"summary":"Health","operationId":"health_android_caller_id_health_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-caller-id-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Caller-Id-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Health Android Caller Id Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/caller-id/lookup":{"get":{"tags":["Android Caller ID"],"summary":"Lookup","operationId":"lookup_android_caller_id_lookup_get","parameters":[{"name":"phone","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":64,"title":"Phone"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-caller-id-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Caller-Id-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallerLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/caller-id/sync":{"get":{"tags":["Android Caller ID"],"summary":"Sync","operationId":"sync_android_caller_id_sync_get","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":1000,"title":"Limit"}},{"name":"client_revision","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Client Revision"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-caller-id-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Caller-Id-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sync Android Caller Id Sync Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/caller-id/search":{"get":{"tags":["Android Caller ID"],"summary":"Search","operationId":"search_android_caller_id_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-caller-id-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Caller-Id-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Android Caller Id Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/caller-id/admin/rebuild":{"post":{"tags":["Android Caller ID"],"summary":"Admin Rebuild","operationId":"admin_rebuild_android_caller_id_admin_rebuild_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-caller-id-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Caller-Id-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Rebuild Android Caller Id Admin Rebuild Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/change-events/health":{"get":{"tags":["Android Change Events"],"summary":"Events Health","operationId":"events_health_android_change_events_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Events Health Android Change Events Health Get"}}}}}}},"/android/change-events":{"get":{"tags":["Android Change Events"],"summary":"List Change Events","operationId":"list_change_events_android_change_events_get","parameters":[{"name":"after_id","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"After Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"branch","in":"query","required":false,"schema":{"type":"string","maxLength":100,"default":"","title":"Branch"}},{"name":"latest","in":"query","required":false,"schema":{"type":"boolean","description":"Return the newest page when after_id is zero","default":false,"title":"Latest"},"description":"Return the newest page when after_id is zero"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Change Events Android Change Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/change-events/device/register":{"post":{"tags":["Android Change Events"],"summary":"Register Android Device","operationId":"register_android_device_android_change_events_device_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceRegistration"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Register Android Device Android Change Events Device Register Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/change-events/device/unregister":{"post":{"tags":["Android Change Events"],"summary":"Unregister Android Device","operationId":"unregister_android_device_android_change_events_device_unregister_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceUnregister"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Unregister Android Device Android Change Events Device Unregister Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/android/change-events/ack":{"post":{"tags":["Android Change Events"],"summary":"Acknowledge Events","operationId":"acknowledge_events_android_change_events_ack_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventAck"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Acknowledge Events Android Change Events Ack Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/global-search":{"get":{"tags":["guest-name-sync"],"summary":"Global Guest Search","operationId":"global_guest_search_guests_global_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":160,"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/global-rename":{"post":{"tags":["guest-name-sync"],"summary":"Global Guest Rename","operationId":"global_guest_rename_guests_global_rename_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalGuestRenameRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/name-change-backups":{"get":{"tags":["guest-name-sync"],"summary":"List Name Change Backups","operationId":"list_name_change_backups_guests_name_change_backups_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/name-change-backups/{backup_id}":{"get":{"tags":["guest-name-sync"],"summary":"Download Name Change Backup","operationId":"download_name_change_backup_guests_name_change_backups__backup_id__get","parameters":[{"name":"backup_id","in":"path","required":true,"schema":{"type":"string","title":"Backup Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/save-table":{"post":{"tags":["branch_tables"],"summary":"Save Table","description":"Saves a snapshot in:  branches/<branch>/table_<tableNumber>.db\nALSO appends (idempotent) into: branches/<branch>/table.db","operationId":"save_table_save_table_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/saved-tables":{"get":{"tags":["branch_tables"],"summary":"Saved Tables","description":"Returns ONLY the visible \"table_<name>.db\" snapshots in branches/<branch>/.\nExcludes:\n  - table.db\n  - backup_tables/*","operationId":"saved_tables_saved_tables_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/table/{table_name}":{"get":{"tags":["branch_tables"],"summary":"Get Table","operationId":"get_table_table__table_name__get","parameters":[{"name":"table_name","in":"path","required":true,"schema":{"type":"string","title":"Table Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/merge-tables/status":{"get":{"tags":["branch_tables"],"summary":"Merge Tables Status","description":"Diagnostic endpoint for the UI/admin.\n\nNote: state inside the file is informational.  A previous crash may leave\nstate=\"running\" in the JSON, but the next POST /merge-tables will still\nrecover automatically because the OS lock is authoritative.","operationId":"merge_tables_status_merge_tables_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/merge-tables":{"post":{"tags":["branch_tables"],"summary":"Merge Tables","description":"✅ Correct per-branch merge:\n  FROM:  branches/<branch>/table_*.db\n  INTO:  branches/<branch>/table.db\n\n✅ No duplicates:\n  - UNIQUE INDEX ux_contacts_nodup\n  - INSERT OR IGNORE\n\n✅ Always move source -> backup_tables with unique naming.","operationId":"merge_tables_merge_tables_post","parameters":[{"name":"archive","in":"query","required":false,"schema":{"type":"integer","description":"(ignored) Always archives after merge. Kept for compatibility.","default":1,"title":"Archive"},"description":"(ignored) Always archives after merge. Kept for compatibility."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/delivery-log":{"get":{"tags":["branch_tables"],"summary":"Delivery Log","operationId":"delivery_log_delivery_log_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/search-by-date":{"get":{"tags":["branch_tables"],"summary":"Search By Date","operationId":"search_by_date_search_by_date_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/secure/ping":{"get":{"summary":"Secure Ping","operationId":"secure_ping_secure_ping_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/only":{"get":{"summary":"Admin Only","operationId":"admin_only_admin_only_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AccountCreate":{"properties":{"code":{"type":"string","maxLength":40,"minLength":1,"title":"Code"},"name":{"type":"string","maxLength":240,"minLength":1,"title":"Name"},"type":{"type":"string","pattern":"^(?i:asset|liability|equity|income|revenue|expense)$","title":"Type"},"parent_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Code"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["code","name","type"],"title":"AccountCreate"},"AccountOut":{"properties":{"code":{"type":"string","maxLength":40,"minLength":1,"title":"Code"},"name":{"type":"string","maxLength":240,"minLength":1,"title":"Name"},"type":{"type":"string","pattern":"^(?i:asset|liability|equity|income|revenue|expense)$","title":"Type"},"parent_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Code"},"is_active":{"type":"boolean","title":"Is Active","default":true},"id":{"type":"integer","title":"Id"}},"type":"object","required":["code","name","type","id"],"title":"AccountOut"},"AdjustPoints":{"properties":{"customer_id":{"type":"integer","title":"Customer Id"},"points":{"type":"integer","title":"Points"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["customer_id","points"],"title":"AdjustPoints"},"AdminActiveIn":{"properties":{"active":{"type":"boolean","title":"Active"}},"type":"object","required":["active"],"title":"AdminActiveIn"},"AdminResetDeviceIn":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"AdminResetDeviceIn"},"AdminSetBranchesIn":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"branches":{"items":{"type":"string"},"type":"array","title":"Branches"}},"type":"object","required":["email","branches"],"title":"AdminSetBranchesIn"},"AdminSetNameIn":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"first_name":{"type":"string","maxLength":80,"minLength":1,"title":"First Name"},"last_name":{"type":"string","maxLength":80,"minLength":1,"title":"Last Name"}},"type":"object","required":["email","first_name","last_name"],"title":"AdminSetNameIn"},"AdminUserPatchIn":{"properties":{"first_name":{"type":"string","maxLength":80,"minLength":1,"title":"First Name"},"last_name":{"type":"string","maxLength":80,"minLength":1,"title":"Last Name"},"roles":{"items":{"type":"string"},"type":"array","title":"Roles"},"branches":{"items":{"type":"string"},"type":"array","title":"Branches"},"active":{"type":"boolean","title":"Active","default":true}},"type":"object","required":["first_name","last_name","roles","branches"],"title":"AdminUserPatchIn"},"AssignTableIn":{"properties":{"table_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Table Number"}},"type":"object","title":"AssignTableIn"},"AvailabilityOut":{"properties":{"table_number":{"type":"string","title":"Table Number"},"available":{"type":"boolean","title":"Available"}},"type":"object","required":["table_number","available"],"title":"AvailabilityOut"},"AwardIn":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"prize":{"type":"string","title":"Prize"},"time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time","description":"Local string time from UI"},"source_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Date"},"ak_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ak Status","description":"One of: 'ak following', 'follow', or None"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Snapshot of the selected contact row"}},"type":"object","required":["prize"],"title":"AwardIn"},"AwardOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"prize":{"type":"string","title":"Prize"},"award_time":{"type":"string","title":"Award Time"},"source_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Date"},"ak_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ak Status"}},"type":"object","required":["id","name","phone","prize","award_time","source_date","ak_status"],"title":"AwardOut"},"BatchItem":{"properties":{"to":{"type":"string","title":"To"},"name":{"type":"string","title":"Name"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"}},"type":"object","required":["to","name"],"title":"BatchItem"},"BatchReport":{"properties":{"ok":{"type":"boolean","title":"Ok"},"server_cap":{"type":"integer","title":"Server Cap"},"client_requested":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Client Requested"},"limit_applied":{"type":"integer","title":"Limit Applied"},"total_input":{"type":"integer","title":"Total Input"},"total_considered":{"type":"integer","title":"Total Considered"},"skipped_emoji":{"type":"integer","title":"Skipped Emoji"},"skipped_wrong_name":{"type":"integer","title":"Skipped Wrong Name"},"skipped_invalid":{"type":"integer","title":"Skipped Invalid"},"sent":{"type":"integer","title":"Sent"},"not_whatsapp":{"type":"integer","title":"Not Whatsapp"},"failed":{"type":"integer","title":"Failed"},"failures":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Failures"},"results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Results"}},"type":"object","required":["ok","server_cap","client_requested","limit_applied","total_input","total_considered","skipped_emoji","skipped_wrong_name","skipped_invalid","sent","not_whatsapp","failed","failures"],"title":"BatchReport"},"Body_api_upload_audio_and_send_webhooks_upload_audio_and_send_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_api_upload_audio_and_send_webhooks_upload_audio_and_send_post"},"Body_api_upload_media_webhooks_upload_media_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_api_upload_media_webhooks_upload_media_post"},"Body_dl_api_export_dl_api_export_post":{"properties":{"file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File"},"body":{"anyOf":[{"$ref":"#/components/schemas/ExportBody"},{"type":"null"}]}},"type":"object","title":"Body_dl_api_export_dl_api_export_post"},"Body_dl_contacts_db_dl_contacts_db_post":{"properties":{"file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File"},"body":{"anyOf":[{"$ref":"#/components/schemas/ExportBody"},{"type":"null"}]}},"type":"object","title":"Body_dl_contacts_db_dl_contacts_db_post"},"Body_dl_download_generic_dl_download_post":{"properties":{"file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File","default":"table.db"},"body":{"anyOf":[{"$ref":"#/components/schemas/ExportBody"},{"type":"null"}]}},"type":"object","title":"Body_dl_download_generic_dl_download_post"},"Body_dl_table_db_dl_table_db_post":{"properties":{"file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File"},"body":{"anyOf":[{"$ref":"#/components/schemas/ExportBody"},{"type":"null"}]}},"type":"object","title":"Body_dl_table_db_dl_table_db_post"},"Body_ingest_sync_ingest_put":{"properties":{"file":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"File"},"table_db":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Table Db"},"body":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Body"}},"type":"object","title":"Body_ingest_sync_ingest_put"},"Body_ocr_upload_endofday_ocr_upload_post":{"properties":{"kind":{"type":"string","title":"Kind"},"branch":{"type":"string","title":"Branch"},"report_date":{"type":"string","title":"Report Date"},"browser_text":{"type":"string","title":"Browser Text","default":""},"browser_quality_json":{"type":"string","title":"Browser Quality Json","default":"{}"},"fast_upload":{"type":"string","title":"Fast Upload","default":"0"},"run_ocr":{"type":"string","title":"Run Ocr","default":"0"},"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["kind","branch","report_date","file"],"title":"Body_ocr_upload_endofday_ocr_upload_post"},"Body_update_company_by_date_update_company_by_date_post":{"properties":{"date":{"type":"string","title":"Date"},"company":{"type":"string","title":"Company"}},"type":"object","required":["date","company"],"title":"Body_update_company_by_date_update_company_by_date_post"},"Body_upload_chat_chat_seen_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_chat_chat_seen_upload_post"},"Body_upload_media_media_manager_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"}},"type":"object","required":["file"],"title":"Body_upload_media_media_manager_upload_post"},"Body_upload_script_backend_upload_script_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_script_backend_upload_script_post"},"Body_webhook_login_webhooks_login_post":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"Body_webhook_login_webhooks_login_post"},"Box":{"properties":{"id":{"type":"string","title":"Id"},"page":{"type":"integer","title":"Page"},"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"w":{"type":"number","title":"W"},"h":{"type":"number","title":"H"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","default":""},"price":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price","default":""},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku","default":""},"align":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Align","default":"right"},"fontSize":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fontsize","default":18},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","default":""},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color","default":""}},"type":"object","required":["id","page","x","y","w","h"],"title":"Box"},"BranchCashAdjustmentIn":{"properties":{"branch":{"type":"string","title":"Branch"},"amount_lbp":{"type":"number","title":"Amount Lbp","default":0},"amount_usd":{"type":"number","title":"Amount Usd","default":0},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["branch"],"title":"BranchCashAdjustmentIn"},"BranchLiveDraftIn":{"properties":{"branch":{"type":"string","title":"Branch"},"report_date":{"type":"string","title":"Report Date"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"client_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Updated At","default":""}},"type":"object","required":["branch","report_date"],"title":"BranchLiveDraftIn"},"BranchOpeningIn":{"properties":{"branch":{"type":"string","title":"Branch"},"opening_lbp":{"type":"number","title":"Opening Lbp","default":0},"opening_usd":{"type":"number","title":"Opening Usd","default":0},"notes":{"type":"string","title":"Notes","default":""}},"type":"object","required":["branch"],"title":"BranchOpeningIn"},"BranchTaxSettingIn":{"properties":{"branch":{"type":"string","title":"Branch"},"ck_tax_percent":{"type":"number","title":"Ck Tax Percent","default":0}},"type":"object","required":["branch"],"title":"BranchTaxSettingIn"},"CallerLookupResponse":{"properties":{"found":{"type":"boolean","title":"Found"},"query":{"type":"string","title":"Query"},"normalized_phone":{"type":"string","title":"Normalized Phone"},"contact":{"anyOf":[{"$ref":"#/components/schemas/CallerRecord"},{"type":"null"}]}},"type":"object","required":["found","query","normalized_phone"],"title":"CallerLookupResponse"},"CallerRecord":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"phone":{"type":"string","title":"Phone"},"normalized_phone":{"type":"string","title":"Normalized Phone"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","name","phone","normalized_phone","updated_at"],"title":"CallerRecord"},"ClaimPayload":{"properties":{"worker_id":{"type":"string","title":"Worker Id"}},"type":"object","required":["worker_id"],"title":"ClaimPayload"},"CollectReq":{"properties":{"branches":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Branches"},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Headers"},"headers_by_branch":{"anyOf":[{"additionalProperties":{"additionalProperties":{"type":"string"},"type":"object"},"type":"object"},{"type":"null"}],"title":"Headers By Branch"},"fetch_db_paths":{"anyOf":[{"items":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"}]},"type":"array"},{"type":"null"}],"title":"Fetch Db Paths"},"backup":{"type":"boolean","title":"Backup","default":true},"verify_tls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verify Tls","default":true},"timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timeout"}},"type":"object","title":"CollectReq"},"CompletePayload":{"properties":{"id":{"type":"integer","title":"Id"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["id","status"],"title":"CompletePayload"},"CreateUserIn":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"first_name":{"type":"string","maxLength":80,"minLength":1,"title":"First Name"},"last_name":{"type":"string","maxLength":80,"minLength":1,"title":"Last Name"},"roles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Roles"},"branches":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Branches"}},"type":"object","required":["email","password","first_name","last_name"],"title":"CreateUserIn"},"CustomerCreate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"phone":{"type":"string","minLength":5,"title":"Phone","description":"Customer phone, unique"}},"type":"object","required":["phone"],"title":"CustomerCreate"},"CustomerServiceSendRequest":{"properties":{"date":{"type":"string","title":"Date","description":"YYYY-MM-DD"},"ids":{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array","title":"Ids"},"dry_run":{"type":"boolean","title":"Dry Run","default":false},"valid_only":{"type":"boolean","title":"Valid Only","default":true},"exclude_bad_names":{"type":"boolean","title":"Exclude Bad Names","default":true},"remove_duplicates":{"type":"boolean","title":"Remove Duplicates","default":true},"limit":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Limit"},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang Code"},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},"type":"object","required":["date"],"title":"CustomerServiceSendRequest"},"CustomerServiceTestSendRequest":{"properties":{"password":{"type":"string","title":"Password"},"phone":{"type":"string","title":"Phone","default":"96171565383"},"name":{"type":"string","title":"Name","default":"Test"},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang Code"}},"type":"object","required":["password"],"title":"CustomerServiceTestSendRequest"},"CustomerUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","title":"CustomerUpdate"},"DeleteContactRequest":{"properties":{"identifier":{"$ref":"#/components/schemas/contacts_delete__ContactIdentifier"}},"type":"object","required":["identifier"],"title":"DeleteContactRequest"},"DeliveryStatusRequest":{"properties":{"message_ids":{"items":{"type":"string"},"type":"array","title":"Message Ids"}},"type":"object","title":"DeliveryStatusRequest"},"DeviceRegistration":{"properties":{"token":{"type":"string","maxLength":4096,"minLength":20,"title":"Token"},"device_id":{"type":"string","maxLength":250,"title":"Device Id","default":""},"branch":{"type":"string","maxLength":100,"title":"Branch","default":""},"platform":{"type":"string","maxLength":30,"title":"Platform","default":"android"},"app_version":{"type":"string","maxLength":80,"title":"App Version","default":""}},"type":"object","required":["token"],"title":"DeviceRegistration"},"DeviceUnregister":{"properties":{"token":{"type":"string","maxLength":4096,"minLength":20,"title":"Token"}},"type":"object","required":["token"],"title":"DeviceUnregister"},"EmitRequest":{"properties":{"module":{"type":"string","title":"Module","default":"system"},"title":{"type":"string","title":"Title","default":"Bamboo"},"body":{"type":"string","title":"Body","default":"Update received"},"url":{"type":"string","title":"Url","default":"/home"},"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data"},"min_interval_sec":{"type":"integer","title":"Min Interval Sec","default":3}},"type":"object","title":"EmitRequest"},"EmployeeIn":{"properties":{"employee_code":{"type":"string","title":"Employee Code","default":""},"full_name":{"type":"string","title":"Full Name"},"branch":{"type":"string","title":"Branch"},"position":{"type":"string","title":"Position","default":""},"phone":{"type":"string","title":"Phone","default":""},"monthly_salary_lbp":{"type":"number","title":"Monthly Salary Lbp","default":0},"monthly_salary_usd":{"type":"number","title":"Monthly Salary Usd","default":0},"status":{"type":"string","title":"Status","default":"active"}},"type":"object","required":["full_name","branch"],"title":"EmployeeIn"},"EndOfDayIn":{"properties":{"report_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Report Id"},"branch":{"type":"string","title":"Branch"},"report_date":{"type":"string","title":"Report Date"},"system_rate":{"type":"number","title":"System Rate","default":89500},"sales_lbp":{"type":"number","title":"Sales Lbp","default":0},"sales_usd":{"type":"number","title":"Sales Usd","default":0},"visa_lbp":{"type":"number","title":"Visa Lbp","default":0},"visa_usd":{"type":"number","title":"Visa Usd","default":0},"whish_lbp":{"type":"number","title":"Whish Lbp","default":0},"whish_usd":{"type":"number","title":"Whish Usd","default":0},"voom_lbp":{"type":"number","title":"Voom Lbp","default":0},"voom_usd":{"type":"number","title":"Voom Usd","default":0},"voom_invoices":{"items":{"$ref":"#/components/schemas/VoomInvoiceIn"},"type":"array","title":"Voom Invoices"},"arrage_lbp":{"type":"number","title":"Arrage Lbp","default":0},"arrage_usd":{"type":"number","title":"Arrage Usd","default":0},"tva_lbp":{"type":"number","title":"Tva Lbp","default":0},"tva_usd":{"type":"number","title":"Tva Usd","default":0},"ck_tax_percent":{"type":"number","title":"Ck Tax Percent","default":0},"expenses":{"items":{"$ref":"#/components/schemas/ExpenseIn"},"type":"array","title":"Expenses"},"main_reading_upload_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Main Reading Upload Id"},"expense_invoice_upload_ids":{"items":{"type":"integer"},"type":"array","title":"Expense Invoice Upload Ids"},"start_balance_lbp":{"type":"number","title":"Start Balance Lbp","default":0},"start_balance_usd":{"type":"number","title":"Start Balance Usd","default":0},"ending_balance_lbp":{"type":"number","title":"Ending Balance Lbp","default":0},"ending_balance_usd":{"type":"number","title":"Ending Balance Usd","default":0},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","default":""}},"type":"object","required":["branch","report_date"],"title":"EndOfDayIn"},"EventAck":{"properties":{"device_id":{"type":"string","maxLength":250,"title":"Device Id","default":""},"token":{"type":"string","maxLength":4096,"title":"Token","default":""},"last_event_id":{"type":"integer","minimum":0.0,"title":"Last Event Id","default":0}},"type":"object","title":"EventAck"},"ExpenseIn":{"properties":{"expense_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expense Id"},"report_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Report Id"},"description":{"type":"string","title":"Description","default":""},"amount_lbp":{"type":"number","title":"Amount Lbp","default":0},"amount_usd":{"type":"number","title":"Amount Usd","default":0},"invoice_upload_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Upload Id"},"employee_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employee Id"},"remark":{"type":"string","title":"Remark","default":""},"gl_account_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gl Account Id"},"gl_account_code":{"type":"string","title":"Gl Account Code","default":""},"gl_account_name":{"type":"string","title":"Gl Account Name","default":""},"gl_account_type":{"type":"string","title":"Gl Account Type","default":""},"requires_employee":{"type":"boolean","title":"Requires Employee","default":false},"ai_suggested_account_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ai Suggested Account Id"},"ai_suggested_account_code":{"type":"string","title":"Ai Suggested Account Code","default":""},"ai_suggested_account_name":{"type":"string","title":"Ai Suggested Account Name","default":""},"ai_confidence":{"type":"number","title":"Ai Confidence","default":0},"ai_reason":{"type":"string","title":"Ai Reason","default":""},"ai_review_status":{"type":"string","title":"Ai Review Status","default":"NOT_REVIEWED"},"ai_override_confirmed":{"type":"boolean","title":"Ai Override Confirmed","default":false},"ai_engine_version":{"type":"string","title":"Ai Engine Version","default":""},"source_type":{"type":"string","title":"Source Type","default":""},"source_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Id"}},"type":"object","title":"ExpenseIn"},"ExpenseSettingIn":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"ExpenseSettingIn"},"ExportBody":{"properties":{"file":{"type":"string","title":"File","default":"table.db"}},"type":"object","title":"ExportBody"},"GlobalGuestRenameRequest":{"properties":{"old_name":{"type":"string","maxLength":200,"minLength":1,"title":"Old Name"},"new_name":{"type":"string","maxLength":200,"minLength":1,"title":"New Name"},"phones":{"title":"Phones","default":""},"confirmation":{"type":"string","maxLength":40,"title":"Confirmation","default":"GLOBAL_RENAME"}},"type":"object","required":["old_name","new_name"],"title":"GlobalGuestRenameRequest"},"GuardianBatchLookupRequest":{"properties":{"queries":{"items":{"type":"string"},"type":"array","maxItems":120,"minItems":1,"title":"Queries"},"source":{"type":"string","maxLength":40,"title":"Source","default":"scanner"}},"type":"object","required":["queries"],"title":"GuardianBatchLookupRequest"},"GuardianLookupRequest":{"properties":{"query":{"type":"string","maxLength":300,"minLength":1,"title":"Query"},"source":{"type":"string","maxLength":40,"title":"Source","default":"android"},"kind":{"type":"string","maxLength":30,"title":"Kind","default":"auto"}},"type":"object","required":["query"],"title":"GuardianLookupRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Item":{"properties":{"code":{"type":"string","title":"Code","description":"SKU code like CK-CHICKBREAST"},"name":{"type":"string","title":"Name"},"type":{"type":"string","pattern":"^(raw|semi_finished|finished|non_stock)$","title":"Type"},"base_uom":{"type":"string","title":"Base Uom","description":"kg, L, pc, box, etc."},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"is_recipe":{"type":"boolean","title":"Is Recipe","default":false},"is_batch_tracked":{"type":"boolean","title":"Is Batch Tracked","default":false},"is_active":{"type":"boolean","title":"Is Active","default":true},"id":{"type":"integer","title":"Id"}},"type":"object","required":["code","name","type","base_uom","id"],"title":"Item"},"JournalCreate":{"properties":{"journal_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Journal Date"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"posted_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posted By"},"lines":{"items":{"$ref":"#/components/schemas/JournalLineIn"},"type":"array","title":"Lines"}},"type":"object","required":["lines"],"title":"JournalCreate"},"JournalLineIn":{"properties":{"account_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Code"},"account_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"debit":{"type":"number","title":"Debit","default":0},"credit":{"type":"number","title":"Credit","default":0},"line_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Line Description"}},"type":"object","title":"JournalLineIn"},"JournalLineOut":{"properties":{"id":{"type":"integer","title":"Id"},"account_id":{"type":"integer","title":"Account Id"},"account_code":{"type":"string","title":"Account Code"},"account_name":{"type":"string","title":"Account Name"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"debit":{"type":"number","title":"Debit"},"credit":{"type":"number","title":"Credit"},"line_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Line Description"}},"type":"object","required":["id","account_id","account_code","account_name","location_id","debit","credit","line_description"],"title":"JournalLineOut"},"JournalOut":{"properties":{"id":{"type":"integer","title":"Id"},"number":{"type":"string","title":"Number"},"journal_date":{"type":"string","title":"Journal Date"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","title":"Created At"},"posted_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posted By"},"posted_at":{"type":"string","title":"Posted At"},"lines":{"items":{"$ref":"#/components/schemas/JournalLineOut"},"type":"array","title":"Lines"}},"type":"object","required":["id","number","journal_date","description","source","reference","created_by","created_at","posted_by","posted_at","lines"],"title":"JournalOut"},"LiveDraftIn":{"properties":{"branch":{"type":"string","title":"Branch"},"report_date":{"type":"string","title":"Report Date"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"}},"type":"object","required":["branch","report_date"],"title":"LiveDraftIn"},"Location":{"properties":{"code":{"type":"string","title":"Code","description":"Short code like WH, CK, JOU, BAT, TRI, ZGH, EHD"},"name":{"type":"string","title":"Name"},"type":{"type":"string","pattern":"^(warehouse|central_kitchen|branch|other)$","title":"Type"},"is_active":{"type":"boolean","title":"Is Active","default":true},"id":{"type":"integer","title":"Id"}},"type":"object","required":["code","name","type","id"],"title":"Location"},"LocationCreate":{"properties":{"code":{"type":"string","title":"Code","description":"Short code like WH, CK, JOU, BAT, TRI, ZGH, EHD"},"name":{"type":"string","title":"Name"},"type":{"type":"string","pattern":"^(warehouse|central_kitchen|branch|other)$","title":"Type"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["code","name","type"],"title":"LocationCreate"},"LoginIn":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"LoginIn"},"MarkPayload":{"properties":{"id":{"type":"integer","title":"Id"},"ok":{"type":"boolean","title":"Ok"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["id","ok"],"title":"MarkPayload"},"MeOut":{"properties":{"user":{"additionalProperties":true,"type":"object","title":"User"}},"type":"object","required":["user"],"title":"MeOut"},"MergeOptions":{"properties":{"SYNC_SHARED_SECRET":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Shared Secret"},"VERIFY_TLS":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verify Tls"},"TIMEOUT_SECS":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timeout Secs"},"RETRIES":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retries"},"BACKOFF":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Backoff"},"SERVER_APIS":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Apis"},"PUSH_TO_BRANCHES":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Push To Branches"},"PUSH_TO_SERVERS":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Push To Servers"},"only":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Only"}},"type":"object","title":"MergeOptions"},"MergeRequest":{"properties":{"sync_root":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Root"},"branches":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Branches"},"distribute":{"type":"boolean","title":"Distribute","default":true}},"type":"object","title":"MergeRequest"},"PatchContactBody":{"properties":{"identifier":{"$ref":"#/components/schemas/contacts_routes__ContactIdentifier"},"name":{"type":"string","title":"Name","default":""},"phones":{"type":"string","title":"Phones","default":""},"birthday":{"type":"string","title":"Birthday","default":""},"company":{"type":"string","title":"Company","default":""},"email":{"type":"string","title":"Email","default":""},"title":{"type":"string","title":"Title","default":""},"address":{"type":"string","title":"Address","default":""},"status":{"type":"string","title":"Status","default":""},"pdf_file":{"type":"string","title":"Pdf File","default":""}},"type":"object","required":["identifier"],"title":"PatchContactBody"},"PnLRow":{"properties":{"account_code":{"type":"string","title":"Account Code"},"account_name":{"type":"string","title":"Account Name"},"type":{"type":"string","title":"Type"},"amount":{"type":"number","title":"Amount"}},"type":"object","required":["account_code","account_name","type","amount"],"title":"PnLRow"},"PostProductionPayload":{"properties":{"actual_qty":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Actual Qty"},"posted_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posted By"}},"type":"object","title":"PostProductionPayload"},"PostTransferPayload":{"properties":{"posted_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posted By"}},"type":"object","title":"PostTransferPayload"},"PriceMap":{"properties":{"boxes":{"items":{"$ref":"#/components/schemas/Box"},"type":"array","title":"Boxes"}},"type":"object","title":"PriceMap"},"ProductionIngredient":{"properties":{"id":{"type":"integer","title":"Id"},"component_item_id":{"type":"integer","title":"Component Item Id"},"component_code":{"type":"string","title":"Component Code"},"component_name":{"type":"string","title":"Component Name"},"planned_qty":{"type":"number","title":"Planned Qty"},"actual_qty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Actual Qty"},"uom":{"type":"string","title":"Uom"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["id","component_item_id","component_code","component_name","planned_qty","actual_qty","uom","note"],"title":"ProductionIngredient"},"ProductionOrderCreate":{"properties":{"item_id":{"type":"integer","title":"Item Id"},"location_id":{"type":"integer","title":"Location Id"},"planned_qty":{"type":"number","exclusiveMinimum":0.0,"title":"Planned Qty"},"uom":{"type":"string","title":"Uom"},"production_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Production Date"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"}},"type":"object","required":["item_id","location_id","planned_qty","uom"],"title":"ProductionOrderCreate"},"ProductionOrderOut":{"properties":{"id":{"type":"integer","title":"Id"},"number":{"type":"string","title":"Number"},"item_id":{"type":"integer","title":"Item Id"},"item_code":{"type":"string","title":"Item Code"},"item_name":{"type":"string","title":"Item Name"},"location_id":{"type":"integer","title":"Location Id"},"location_code":{"type":"string","title":"Location Code"},"location_name":{"type":"string","title":"Location Name"},"planned_qty":{"type":"number","title":"Planned Qty"},"actual_qty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Actual Qty"},"uom":{"type":"string","title":"Uom"},"status":{"type":"string","title":"Status"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","title":"Created At"},"production_date":{"type":"string","title":"Production Date"},"posted_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posted By"},"posted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posted At"},"total_input_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Input Cost"},"unit_output_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Unit Output Cost"},"ingredients":{"items":{"$ref":"#/components/schemas/ProductionIngredient"},"type":"array","title":"Ingredients"}},"type":"object","required":["id","number","item_id","item_code","item_name","location_id","location_code","location_name","planned_qty","actual_qty","uom","status","notes","created_by","created_at","production_date","posted_by","posted_at","total_input_cost","unit_output_cost","ingredients"],"title":"ProductionOrderOut"},"PublicReservationIn":{"properties":{"branch":{"type":"string","title":"Branch"},"customer_name":{"type":"string","maxLength":100,"minLength":2,"title":"Customer Name"},"country_code":{"type":"string","maxLength":8,"minLength":1,"title":"Country Code"},"phone":{"type":"string","maxLength":32,"minLength":4,"title":"Phone"},"party_size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Party Size"},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"seating_preference":{"type":"string","title":"Seating Preference","default":"non_smoking"},"notes":{"type":"string","maxLength":700,"title":"Notes","default":""},"locale":{"type":"string","maxLength":8,"title":"Locale","default":"en"},"client_request_id":{"type":"string","maxLength":100,"title":"Client Request Id","default":""},"website":{"type":"string","maxLength":200,"title":"Website","default":""}},"type":"object","required":["branch","customer_name","country_code","phone","party_size","date","time"],"title":"PublicReservationIn"},"PurchaseCreate":{"properties":{"date":{"type":"string","title":"Date"},"supplier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Supplier"},"invoice_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice No"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"lines":{"items":{"$ref":"#/components/schemas/PurchaseLineIn"},"type":"array","title":"Lines"}},"type":"object","required":["date","lines"],"title":"PurchaseCreate"},"PurchaseLineIn":{"properties":{"item_id":{"type":"integer","title":"Item Id"},"qty":{"type":"number","title":"Qty"},"unit_cost":{"type":"number","title":"Unit Cost"}},"type":"object","required":["item_id","qty","unit_cost"],"title":"PurchaseLineIn"},"PushKeys":{"properties":{"p256dh":{"type":"string","title":"P256Dh"},"auth":{"type":"string","title":"Auth"}},"type":"object","required":["p256dh","auth"],"title":"PushKeys"},"PushPayload":{"properties":{"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","default":"/"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon","default":"/icons/icon-192.png"},"badge":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge","default":"/icons/badge-72.png"},"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag","default":"general"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"target_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Role"},"include_branch_staff":{"type":"boolean","title":"Include Branch Staff","default":true},"include_all_admins":{"type":"boolean","title":"Include All Admins","default":true},"type":{"type":"string","title":"Type","default":"info"},"source":{"type":"string","title":"Source","default":"push"},"priority":{"type":"integer","title":"Priority","default":0},"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload"}},"type":"object","required":["title","body"],"title":"PushPayload"},"PushSubscription":{"properties":{"endpoint":{"type":"string","minLength":10,"title":"Endpoint"},"keys":{"anyOf":[{"$ref":"#/components/schemas/SubscriptionKeys"},{"type":"null"}]}},"type":"object","required":["endpoint"],"title":"PushSubscription"},"PushSubscriptionIn":{"properties":{"endpoint":{"type":"string","title":"Endpoint"},"keys":{"$ref":"#/components/schemas/PushKeys"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"target_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Role"},"device_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Label"},"is_admin":{"type":"boolean","title":"Is Admin","default":false}},"type":"object","required":["endpoint","keys"],"title":"PushSubscriptionIn"},"Recipe":{"properties":{"item_id":{"type":"integer","title":"Item Id","description":"Item produced by this recipe"},"yield_qty":{"type":"number","title":"Yield Qty"},"yield_uom":{"type":"string","title":"Yield Uom"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"id":{"type":"integer","title":"Id"},"lines":{"items":{"$ref":"#/components/schemas/RecipeLine"},"type":"array","title":"Lines"}},"type":"object","required":["item_id","yield_qty","yield_uom","id","lines"],"title":"Recipe"},"RecipeCreate":{"properties":{"item_id":{"type":"integer","title":"Item Id","description":"Item produced by this recipe"},"yield_qty":{"type":"number","title":"Yield Qty"},"yield_uom":{"type":"string","title":"Yield Uom"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"lines":{"items":{"$ref":"#/components/schemas/RecipeLineBase"},"type":"array","title":"Lines"}},"type":"object","required":["item_id","yield_qty","yield_uom","lines"],"title":"RecipeCreate"},"RecipeLine":{"properties":{"component_item_id":{"type":"integer","title":"Component Item Id"},"qty_per_yield":{"type":"number","title":"Qty Per Yield"},"uom":{"type":"string","title":"Uom"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"},"id":{"type":"integer","title":"Id"}},"type":"object","required":["component_item_id","qty_per_yield","uom","id"],"title":"RecipeLine"},"RecipeLineBase":{"properties":{"component_item_id":{"type":"integer","title":"Component Item Id"},"qty_per_yield":{"type":"number","title":"Qty Per Yield"},"uom":{"type":"string","title":"Uom"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"type":"object","required":["component_item_id","qty_per_yield","uom"],"title":"RecipeLineBase"},"RedeemCreate":{"properties":{"customer_id":{"type":"integer","title":"Customer Id"},"sku":{"type":"string","title":"Sku"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["customer_id","sku"],"title":"RedeemCreate"},"RequisitionCreate":{"properties":{"date":{"type":"string","title":"Date"},"kitchen":{"type":"string","title":"Kitchen"},"ref_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref No"},"lines":{"items":{"$ref":"#/components/schemas/RequisitionLineIn"},"type":"array","title":"Lines"}},"type":"object","required":["date","kitchen","lines"],"title":"RequisitionCreate"},"RequisitionLineIn":{"properties":{"item_id":{"type":"integer","title":"Item Id"},"qty":{"type":"number","title":"Qty"}},"type":"object","required":["item_id","qty"],"title":"RequisitionLineIn"},"RescheduleIn":{"properties":{"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"window_min":{"type":"integer","maximum":300.0,"minimum":15.0,"title":"Window Min","default":90}},"type":"object","required":["date","time"],"title":"RescheduleIn"},"ReservationIn":{"properties":{"customer_name":{"type":"string","maxLength":100,"minLength":1,"title":"Customer Name"},"phone":{"type":"string","maxLength":32,"minLength":6,"title":"Phone"},"party_size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Party Size"},"date":{"type":"string","title":"Date"},"time":{"type":"string","title":"Time"},"notes":{"type":"string","maxLength":1000,"title":"Notes","default":""},"seating_preference":{"type":"string","title":"Seating Preference","default":"no_preference"}},"type":"object","required":["customer_name","phone","party_size","date","time"],"title":"ReservationIn"},"ReservationOut":{"properties":{"id":{"type":"integer","title":"Id"},"customer_name":{"type":"string","title":"Customer Name"},"phone":{"type":"string","title":"Phone"},"party_size":{"type":"integer","title":"Party Size"},"notes":{"type":"string","title":"Notes"},"status":{"type":"string","title":"Status"},"table_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Table Number"},"start_ts":{"type":"string","title":"Start Ts"},"created_at":{"type":"string","title":"Created At"},"seating_preference":{"type":"string","title":"Seating Preference","default":"no_preference"},"source":{"type":"string","title":"Source","default":"staff"},"reservation_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reservation Code"},"customer_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Email"},"whatsapp_status":{"type":"string","title":"Whatsapp Status","default":"not_requested"},"whatsapp_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp Message Id"},"whatsapp_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp Error"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"}},"type":"object","required":["id","customer_name","phone","party_size","notes","status","table_number","start_ts","created_at"],"title":"ReservationOut"},"ReservationPatchIn":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"table_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Table Number"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"seating_preference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seating Preference"},"customer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"party_size":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Party Size"}},"type":"object","title":"ReservationPatchIn"},"ReservationUpdateIn":{"properties":{"customer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"party_size":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Party Size"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"seating_preference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seating Preference"}},"type":"object","title":"ReservationUpdateIn"},"RewardUpsert":{"properties":{"sku":{"type":"string","title":"Sku"},"name":{"type":"string","title":"Name"},"cost_points":{"type":"integer","title":"Cost Points"},"active":{"type":"boolean","title":"Active","default":true}},"type":"object","required":["sku","name","cost_points"],"title":"RewardUpsert"},"RoleCreateIn":{"properties":{"name":{"type":"string","maxLength":48,"minLength":2,"title":"Name"},"description":{"type":"string","maxLength":200,"title":"Description","default":""}},"type":"object","required":["name"],"title":"RoleCreateIn"},"RolePermsIn":{"properties":{"perms":{"items":{"type":"string"},"type":"array","title":"Perms"}},"type":"object","title":"RolePermsIn"},"RoleRenameIn":{"properties":{"new_name":{"type":"string","maxLength":48,"minLength":2,"title":"New Name"},"description":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Description"}},"type":"object","required":["new_name"],"title":"RoleRenameIn"},"SaintChristinaVoucherRequest":{"properties":{"customer_name":{"type":"string","maxLength":80,"minLength":1,"title":"Customer Name"},"phone":{"type":"string","maxLength":30,"title":"Phone","default":""},"campaign":{"type":"string","maxLength":80,"title":"Campaign","default":"st_christina"}},"type":"object","required":["customer_name"],"title":"SaintChristinaVoucherRequest"},"SaintJamesVoucherRequest":{"properties":{"customer_name":{"type":"string","maxLength":80,"minLength":1,"title":"Customer Name"},"phone":{"type":"string","maxLength":30,"title":"Phone","default":""},"campaign":{"type":"string","maxLength":80,"title":"Campaign","default":"st_james"}},"type":"object","required":["customer_name"],"title":"SaintJamesVoucherRequest"},"SaintMarthaVoucherRequest":{"properties":{"customer_name":{"type":"string","maxLength":80,"minLength":1,"title":"Customer Name"},"phone":{"type":"string","maxLength":30,"title":"Phone","default":""},"campaign":{"type":"string","maxLength":80,"title":"Campaign","default":"st_martha"}},"type":"object","required":["customer_name"],"title":"SaintMarthaVoucherRequest"},"SaintNathalieVoucherRequest":{"properties":{"customer_name":{"type":"string","maxLength":80,"minLength":1,"title":"Customer Name"},"phone":{"type":"string","maxLength":30,"title":"Phone","default":""},"campaign":{"type":"string","maxLength":80,"title":"Campaign","default":"st_nathalie"}},"type":"object","required":["customer_name"],"title":"SaintNathalieVoucherRequest"},"SalarySlipCreateIn":{"properties":{"slip_type":{"type":"string","title":"Slip Type"},"employee_id":{"type":"integer","title":"Employee Id"},"period_month":{"type":"string","title":"Period Month"},"payment_date":{"type":"string","title":"Payment Date"},"allowances_lbp":{"type":"number","title":"Allowances Lbp","default":0},"allowances_usd":{"type":"number","title":"Allowances Usd","default":0},"deductions_lbp":{"type":"number","title":"Deductions Lbp","default":0},"deductions_usd":{"type":"number","title":"Deductions Usd","default":0},"salary_paid_lbp":{"type":"number","title":"Salary Paid Lbp","default":0},"salary_paid_usd":{"type":"number","title":"Salary Paid Usd","default":0},"advance_paid_lbp":{"type":"number","title":"Advance Paid Lbp","default":0},"advance_paid_usd":{"type":"number","title":"Advance Paid Usd","default":0},"notes":{"type":"string","title":"Notes","default":""}},"type":"object","required":["slip_type","employee_id","period_month","payment_date"],"title":"SalarySlipCreateIn"},"SalesDayCreate":{"properties":{"location_id":{"type":"integer","title":"Location Id"},"sale_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sale Date","description":"ISO date (or datetime). Defaults to today if missing."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"e.g. 'POS', 'Delivery', 'Zomato', etc."},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference","description":"Optional POS batch reference / Z-report number"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"lines":{"items":{"$ref":"#/components/schemas/SalesLineIn"},"type":"array","title":"Lines"}},"type":"object","required":["location_id","lines"],"title":"SalesDayCreate"},"SalesDayOut":{"properties":{"id":{"type":"integer","title":"Id"},"number":{"type":"string","title":"Number"},"location_id":{"type":"integer","title":"Location Id"},"location_code":{"type":"string","title":"Location Code"},"location_name":{"type":"string","title":"Location Name"},"sale_date":{"type":"string","title":"Sale Date"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"total_net_revenue":{"type":"number","title":"Total Net Revenue"},"total_cogs":{"type":"number","title":"Total Cogs"},"gross_profit":{"type":"number","title":"Gross Profit"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","title":"Created At"},"lines":{"items":{"$ref":"#/components/schemas/SalesLineOut"},"type":"array","title":"Lines"}},"type":"object","required":["id","number","location_id","location_code","location_name","sale_date","source","reference","total_net_revenue","total_cogs","gross_profit","created_by","created_at","lines"],"title":"SalesDayOut"},"SalesDaySummary":{"properties":{"id":{"type":"integer","title":"Id"},"number":{"type":"string","title":"Number"},"location_id":{"type":"integer","title":"Location Id"},"location_code":{"type":"string","title":"Location Code"},"location_name":{"type":"string","title":"Location Name"},"sale_date":{"type":"string","title":"Sale Date"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"total_net_revenue":{"type":"number","title":"Total Net Revenue"},"total_cogs":{"type":"number","title":"Total Cogs"},"gross_profit":{"type":"number","title":"Gross Profit"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","number","location_id","location_code","location_name","sale_date","source","reference","total_net_revenue","total_cogs","gross_profit","created_by","created_at"],"title":"SalesDaySummary"},"SalesLineIn":{"properties":{"item_id":{"type":"integer","title":"Item Id"},"qty_sold":{"type":"number","exclusiveMinimum":0.0,"title":"Qty Sold","description":"Total quantity sold of this menu item"},"net_revenue":{"type":"number","title":"Net Revenue","description":"Total net sales amount for this item (after discounts)"}},"type":"object","required":["item_id","qty_sold","net_revenue"],"title":"SalesLineIn"},"SalesLineOut":{"properties":{"id":{"type":"integer","title":"Id"},"item_id":{"type":"integer","title":"Item Id"},"item_code":{"type":"string","title":"Item Code"},"item_name":{"type":"string","title":"Item Name"},"qty_sold":{"type":"number","title":"Qty Sold"},"net_revenue":{"type":"number","title":"Net Revenue"},"cogs_value":{"type":"number","title":"Cogs Value"},"gross_profit":{"type":"number","title":"Gross Profit"}},"type":"object","required":["id","item_id","item_code","item_name","qty_sold","net_revenue","cogs_value","gross_profit"],"title":"SalesLineOut"},"SendBatchReq":{"properties":{"template":{"type":"string","title":"Template","default":"first_time_we_met"},"lang":{"type":"string","title":"Lang","default":"en"},"items":{"items":{"$ref":"#/components/schemas/BatchItem"},"type":"array","title":"Items"},"requested_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requested Limit"},"filter_emoji_names":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Filter Emoji Names"},"filter_wrong_number_names":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Filter Wrong Number Names"}},"type":"object","title":"SendBatchReq"},"SendResult":{"properties":{"ok":{"type":"boolean","title":"Ok"},"status_code":{"type":"integer","title":"Status Code"},"wa_status":{"type":"string","title":"Wa Status"},"wa_error_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Wa Error Code"},"response":{"additionalProperties":true,"type":"object","title":"Response"}},"type":"object","required":["ok","status_code","wa_status","response"],"title":"SendResult"},"SendTemplateReq":{"properties":{"to":{"type":"string","title":"To","description":"Phone in international format WITHOUT + (digits only)"},"name":{"type":"string","title":"Name","description":"Customer name for BODY variable {{1}}"},"template":{"type":"string","title":"Template","default":"first_time_we_met"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image","description":"Header image URL"},"lang":{"type":"string","title":"Lang","default":"en"}},"type":"object","required":["to","name"],"title":"SendTemplateReq"},"StaffItem":{"properties":{"role":{"type":"string","enum":["hostess","waiter"],"title":"Role"},"name":{"type":"string","title":"Name"}},"type":"object","required":["role","name"],"title":"StaffItem"},"StaffList":{"properties":{"hostesses":{"items":{"type":"string"},"type":"array","title":"Hostesses"},"waiters":{"items":{"type":"string"},"type":"array","title":"Waiters"}},"type":"object","title":"StaffList"},"StaffPayload":{"properties":{"hostesses":{"items":{"type":"string"},"type":"array","title":"Hostesses","default":[]},"waiters":{"items":{"type":"string"},"type":"array","title":"Waiters","default":[]}},"type":"object","title":"StaffPayload"},"StockBalance":{"properties":{"item_id":{"type":"integer","title":"Item Id"},"item_code":{"type":"string","title":"Item Code"},"item_name":{"type":"string","title":"Item Name"},"location_id":{"type":"integer","title":"Location Id"},"location_code":{"type":"string","title":"Location Code"},"location_name":{"type":"string","title":"Location Name"},"on_hand_qty":{"type":"number","title":"On Hand Qty"},"average_cost":{"type":"number","title":"Average Cost"},"total_value":{"type":"number","title":"Total Value"},"last_movement_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Movement At"}},"type":"object","required":["item_id","item_code","item_name","location_id","location_code","location_name","on_hand_qty","average_cost","total_value","last_movement_at"],"title":"StockBalance"},"StockMoveCreate":{"properties":{"move_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Move Date","description":"ISO date/time, defaults to now (UTC) if missing"},"item_id":{"type":"integer","title":"Item Id"},"location_id":{"type":"integer","title":"Location Id"},"qty":{"type":"number","title":"Qty","description":"Positive = in, Negative = out"},"unit_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Unit Cost","description":"Cost per unit. Required for positive qty if you want proper average-cost. If missing on negative qty, system uses current average cost."},"doc_type":{"type":"string","title":"Doc Type","description":"Document type: e.g. 'OPENING', 'PO_GRN', 'TRANSFER', 'PRODUCTION_IN', 'PRODUCTION_OUT', 'ADJUSTMENT', 'WASTE', 'SALE_ISSUE'"},"doc_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Id"},"batch_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch No"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"}},"type":"object","required":["item_id","location_id","qty","doc_type"],"title":"StockMoveCreate"},"SubscribeRequest":{"properties":{"subscription":{"$ref":"#/components/schemas/PushSubscription"}},"type":"object","required":["subscription"],"title":"SubscribeRequest"},"SubscriptionKeys":{"properties":{"p256dh":{"type":"string","minLength":1,"title":"P256Dh"},"auth":{"type":"string","minLength":1,"title":"Auth"}},"type":"object","required":["p256dh","auth"],"title":"SubscriptionKeys"},"Supplier":{"properties":{"name":{"type":"string","title":"Name"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","description":"Optional supplier short code"},"contact_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Phone"},"contact_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Email"},"payment_terms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Terms","description":"e.g. CASH, 30D, 60D"},"default_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Currency","default":"LBP"},"is_active":{"type":"boolean","title":"Is Active","default":true},"id":{"type":"integer","title":"Id"}},"type":"object","required":["name","id"],"title":"Supplier"},"SupplierCreate":{"properties":{"name":{"type":"string","title":"Name"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","description":"Optional supplier short code"},"contact_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Phone"},"contact_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Email"},"payment_terms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Terms","description":"e.g. CASH, 30D, 60D"},"default_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Currency","default":"LBP"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name"],"title":"SupplierCreate"},"SystemRateIn":{"properties":{"system_rate":{"type":"number","title":"System Rate"}},"type":"object","required":["system_rate"],"title":"SystemRateIn"},"TestPushRequest":{"properties":{"title":{"type":"string","title":"Title","default":"Test notification"},"body":{"type":"string","title":"Body","default":"Hello from Bamboo"},"url":{"type":"string","title":"Url","default":"/home"},"module":{"type":"string","title":"Module","default":"system"}},"type":"object","title":"TestPushRequest"},"TransferCreate":{"properties":{"transfer_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Date","description":"ISO datetime, default now if missing"},"from_location_id":{"type":"integer","title":"From Location Id"},"to_location_id":{"type":"integer","title":"To Location Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"lines":{"items":{"$ref":"#/components/schemas/TransferLineIn"},"type":"array","title":"Lines"}},"type":"object","required":["from_location_id","to_location_id","lines"],"title":"TransferCreate"},"TransferLine":{"properties":{"id":{"type":"integer","title":"Id"},"item_id":{"type":"integer","title":"Item Id"},"item_code":{"type":"string","title":"Item Code"},"item_name":{"type":"string","title":"Item Name"},"qty":{"type":"number","title":"Qty"},"uom":{"type":"string","title":"Uom"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["id","item_id","item_code","item_name","qty","uom"],"title":"TransferLine"},"TransferLineIn":{"properties":{"item_id":{"type":"integer","title":"Item Id"},"qty":{"type":"number","exclusiveMinimum":0.0,"title":"Qty","description":"Quantity to transfer (always positive)"},"uom":{"type":"string","title":"Uom"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["item_id","qty","uom"],"title":"TransferLineIn"},"TransferOut":{"properties":{"id":{"type":"integer","title":"Id"},"number":{"type":"string","title":"Number"},"transfer_date":{"type":"string","title":"Transfer Date"},"from_location_id":{"type":"integer","title":"From Location Id"},"from_location_code":{"type":"string","title":"From Location Code"},"from_location_name":{"type":"string","title":"From Location Name"},"to_location_id":{"type":"integer","title":"To Location Id"},"to_location_code":{"type":"string","title":"To Location Code"},"to_location_name":{"type":"string","title":"To Location Name"},"status":{"type":"string","title":"Status"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","title":"Created At"},"posted_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posted By"},"posted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posted At"},"lines":{"items":{"$ref":"#/components/schemas/TransferLine"},"type":"array","title":"Lines"}},"type":"object","required":["id","number","transfer_date","from_location_id","from_location_code","from_location_name","to_location_id","to_location_code","to_location_name","status","notes","created_by","created_at","posted_by","posted_at","lines"],"title":"TransferOut","description":"Full transfer with header + lines."},"TrialBalanceRow":{"properties":{"account_id":{"type":"integer","title":"Account Id"},"account_code":{"type":"string","title":"Account Code"},"account_name":{"type":"string","title":"Account Name"},"type":{"type":"string","title":"Type"},"debit":{"type":"number","title":"Debit"},"credit":{"type":"number","title":"Credit"},"net":{"type":"number","title":"Net"}},"type":"object","required":["account_id","account_code","account_name","type","debit","credit","net"],"title":"TrialBalanceRow"},"UnsubscribeIn":{"properties":{"endpoint":{"type":"string","title":"Endpoint"}},"type":"object","required":["endpoint"],"title":"UnsubscribeIn"},"UnsubscribeRequest":{"properties":{"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"},"subscription":{"anyOf":[{"$ref":"#/components/schemas/PushSubscription"},{"type":"null"}]}},"type":"object","title":"UnsubscribeRequest"},"UpdateContactReq":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name","default":""},"company":{"type":"string","title":"Company","default":""},"phones":{"type":"string","title":"Phones","default":""},"birthday":{"type":"string","title":"Birthday","default":""}},"type":"object","required":["id"],"title":"UpdateContactReq"},"UpdateContactRequest":{"properties":{"identifier":{"additionalProperties":true,"type":"object","title":"Identifier"},"name":{"type":"string","title":"Name"},"phones":{"type":"string","title":"Phones"},"birthday":{"type":"string","title":"Birthday"}},"type":"object","required":["identifier","name","phones","birthday"],"title":"UpdateContactRequest"},"UpdateStatusIn":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"UpdateStatusIn"},"UpdateTableContact":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"phones":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phones"},"birthday":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birthday"}},"type":"object","required":["id"],"title":"UpdateTableContact"},"UserCreateIn":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"branch":{"type":"string","title":"Branch"},"role":{"type":"string","title":"Role","default":"user"}},"type":"object","required":["username","password","branch"],"title":"UserCreateIn"},"UserPasswordIn":{"properties":{"password":{"type":"string","title":"Password"}},"type":"object","required":["password"],"title":"UserPasswordIn"},"UserRolesSetIn":{"properties":{"roles":{"items":{"type":"string"},"type":"array","title":"Roles"}},"type":"object","title":"UserRolesSetIn"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VisitCreate":{"properties":{"customer_id":{"type":"integer","title":"Customer Id"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"},"table_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Table Number"},"points":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Points"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["customer_id"],"title":"VisitCreate"},"VoomInvoiceIn":{"properties":{"invoice_no":{"type":"string","title":"Invoice No","default":""},"amount_lbp":{"type":"number","title":"Amount Lbp","default":0},"amount_usd":{"type":"number","title":"Amount Usd","default":0},"note":{"type":"string","title":"Note","default":""}},"type":"object","title":"VoomInvoiceIn"},"VoucherRequest":{"properties":{"event":{"type":"string","maxLength":40,"minLength":3,"title":"Event"},"customer_name":{"type":"string","maxLength":80,"minLength":1,"title":"Customer Name"},"phone":{"type":"string","maxLength":30,"title":"Phone","default":""},"campaign":{"type":"string","maxLength":80,"title":"Campaign","default":""}},"type":"object","required":["event","customer_name"],"title":"VoucherRequest"},"WastageCreate":{"properties":{"date":{"type":"string","title":"Date"},"item_id":{"type":"integer","title":"Item Id"},"qty":{"type":"number","title":"Qty"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["date","item_id","qty"],"title":"WastageCreate"},"contacts_delete__ContactIdentifier":{"properties":{"name":{"type":"string","title":"Name","default":""},"phones":{"type":"string","title":"Phones","default":""}},"type":"object","title":"ContactIdentifier"},"contacts_routes__ContactIdentifier":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":""},"phones":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phones","default":""}},"type":"object","title":"ContactIdentifier"},"cs_queue__EnqueuePayload":{"properties":{"items":{"items":{"$ref":"#/components/schemas/cs_queue__QueueItem"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"EnqueuePayload"},"cs_queue__QueueItem":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":""},"phone":{"type":"string","title":"Phone","description":"Digits only; e.g., 96171123456"},"message":{"type":"string","title":"Message"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch","default":""}},"type":"object","required":["phone","message"],"title":"QueueItem"},"inventory_master__ItemCreate":{"properties":{"code":{"type":"string","title":"Code","description":"SKU code like CK-CHICKBREAST"},"name":{"type":"string","title":"Name"},"type":{"type":"string","pattern":"^(raw|semi_finished|finished|non_stock)$","title":"Type"},"base_uom":{"type":"string","title":"Base Uom","description":"kg, L, pc, box, etc."},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"is_recipe":{"type":"boolean","title":"Is Recipe","default":false},"is_batch_tracked":{"type":"boolean","title":"Is Batch Tracked","default":false},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["code","name","type","base_uom"],"title":"ItemCreate"},"inventory_routes__ItemCreate":{"properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"name":{"type":"string","title":"Name"},"unit":{"type":"string","title":"Unit","default":"kg"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},"type":"object","required":["name"],"title":"ItemCreate"},"queue_routes__EnqueuePayload":{"properties":{"items":{"items":{"$ref":"#/components/schemas/queue_routes__QueueItem"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"EnqueuePayload"},"queue_routes__QueueItem":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":""},"phone":{"type":"string","title":"Phone"},"table_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Table Name","default":""},"pdf_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pdf Path","default":""}},"type":"object","required":["phone"],"title":"QueueItem"}}}}